谁一开始就是大神?

PHP 第104页

PHP

配置路由后gii找不到了[2.0]

Tinanice阅读(92)

没配置路由之前可以正常打开 http://127.0.0.1:8000/word/backend/web/index.php?r=gii

配置了路由之后 同样的路径 打不开了

http://127.0.0.1:8000/word/backend/web/gii.html
能访问不?
路由配置为path模式,试试:
http://127.0.0.1:8000/word/backend/web/index.php/gii
你的路由怎么设置的?代码贴出来。
http://127.0.0.1:8000/word/backend/web/gii
使用 showScriptName 需要你的 服务器 开启了 相应模块,比如 apache 的
详见 http://www.yiiframework.com/doc-2.0/guide-start-installation.html
gii是一个模块,你自己看看你改了路由之后是什么怎么访问模块的
http://127.0.0.1:8000/word/backend/gii.php

yii2如何引入资源文件[2.0]

Jadecrab阅读(86)

<?php
use yii\helpers\Html;
use yii\bootstrap\Nav;
use yii\bootstrap\NavBar;
use yii\widgets\Breadcrumbs;
use app\assets\AppAsset;

/* @var $this \yii\web\View */
/* @var $content string */

AppAsset::register($this);
?>
<head>
    <meta charset="<?= Yii::$app->charset ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
    <?php $this->head() ?>
</head>

他是如何引入资源文件的?
用的yii2basic的layout/main.php

一切尽在Controller的render方法中,只有在控制器中render才会加载layout,在View的render方法中是不会自动加载layout
layout怎么引用进来我们已经知道了,那么在视图文件中怎么把资源注入到layout的头部或者底部呢?
每个Asset中都会用到以上这些资源注入方法,而在Layout中会有View::head()、View::beginBody()、View::endBody() 这些标记,在页面的输出<![CDATA[YII-BLOCK-HEAD]]>就这一串这样子的字符。在View::endPage()的时候就会把注入的资源全部替换到页面上的每一个标记中。至于要指定注入到某一个标记中,需要指定上面的注入资源函数的第二个参数。
AppAsset::register($this);
可以追踪下源码。大体是通过layout里的$this->head() $this->endBody() 这些方法添加进去的
刚刚研究出来,是如何引入资源文件,不过已经有高手解答了,哈哈

yii2.0.3如何部署到网络服务器[2.0]

coolEagle阅读(89)

1.我用composer新生成一个yii(2.0.3)应用到xunwu这个文件夹,我只把这一个文件夹上传到我的服务器上,用http://域名.com/xunwu/web/index.php访问不到,请问为什么会这样?需要上传其他文件夹吗?(例如framework文件夹在2.0.3里不需要吧?)还是缓存问题?(但这是刚用composer生成的没有修改过的)

2.如果是在本地制作、建立数据库、测试之后再上传(即不是刚生成的应用),除了db.php(数据库配置)和域名需要修改外,缓存要如何删除?已经建好了站迁移服务器略蛋疼。

请详细说明一下,谢谢!

请问是怎么样上传?建议使用git
如果你指的是需要在网络上发布你的网站,那么你的网站根目录应该是web文件夹,而非YII2 ROOT,如果你是虚拟主机,还需要参考文档的共享主机那一章节。
同问这个问题。。。到底需要上传哪些到哪里?
这样就解决了?

可有人会Yii2-admin这个东西啊[2.0]

Swiftsuper阅读(94)

安好了,不会用。比如那个添加rule的时候那个类名填啥我都不知道。试了很多都不行。。。

示例说明:
新建common\rbac\AuthorRule(此类extend yii\rbac\Rule), 然后新建rule的时候,输入
rulename:AuthorRule
classname:\common\rbac\AuthorRule
提交即可成功
这个建议你还是先去看看视频,看看别人的代码,再来研究。
也是搞不太清要怎么填写,后来看了一下源码,应该是要输入:
1、rule name:随意取的名字
2、class name:是一个类名,继承自yii\rbac\Rule的子类,其实就是自己写的rule实现
看一下保存rule的实现:

Yii2客户端验证有时候需要alert弹出错误消息,如何实现[2.0]

Ellieyak阅读(87)

Yii2 客户端验证有时候需要 alert 弹出错误消息,如何实现?
yii默认是把错误消息显示在表单后面的。 有时候前端需要直接 alert错误消息,这个时候怎么实现呢?

验证消息的提示是通过yii.validation.js最终实现的,这个js文件在yii/web/assets/下第一个文件夹里,你找到这段语句:
然后在
之后添加一句:
然后保存,这样就可以使得验证错误信息在input触发blur的时候,不仅显示在页面,也会弹出对话框了。
By ArthurSS 2015/4/3
可以使用CSS定位消息的显示位置吧。

验证规则后值被莫名其妙清空了[1.1]

Fionahope阅读(83)

我描述大概的情景:我使用yii中内置的CUploadedFile上传文件后,重新上传图片时,由于上传文件为空,所以我把原来的字段值重新赋回去,表示不修改原来的图片,但是在调用save()方法保存修改时,之前被赋值的图片字段居然被清空了,经过我排查后,最后锁定问题来自于调用save()方法时默认触发validate()方法进行规则验证()后,之前被赋值的图片字段居然变成了空值(注意赋值操作是在save操作之前),莫名其妙被清空掉了,不知道大家有没有遇到过这样的问题?

如果你不想改掉这个字段的话,可以把它unset掉
那应该是你没有判断是否为空,你將空的数据也传入了数据库,那数据库就帮你保存啦

用User::model()创建模型返回为null[1.1]

Hazelhope阅读(87)

yii 中使用User::model()->find('username=:name',array(':name'=>$this->username));创建模型出现Call to a member function find() on a non-object错误,而改成$userModel=new User();就没事,何解啊?我的模型User.php都已经定义好了,求高手解答啊!!!

说明User::model()不是一个模型
有可能是你在User里面没有写model这个静态方法呗

Yii2获取用户输入的数据[2.0]

likelydear阅读(90)

if ($model->load(Yii::$app->request->post()) && $model->save()) {
  // 获取用户输入的产品名
  Yii::$app->request->post("pro_name");//没获取到,请问各位是如何解决的?
}

这很简单啊,你已经做好的数据传递(load)和保存(save),在函数里输出试试:
如果没有赋值显示null,那就是你的model或者view的问题了

请问后台上传后的图片,大家都是怎么保存的。[2.0]

Noblesuper阅读(91)

大家好,我使用yii2高级模板制作上传的时候遇到些问题,
请问大家在backend应用中上传文件都是怎么存储的。我实际情况这样。
后台上传时,我希望将图片保存到前台的目录下 “frontend\web\upload\xxxx….”
但是后台上传些保存路径的时候 无法获取到前台的存储路劲。
我尝试了。@web,@webroot,等等 都只能获取到 backend…… 请问大家都是怎么处理的?

难道访客前端浏览网页的时候 也是在调用后台的某个url?

呃…. 不好意思我没有描述清楚。
假设我站点根目录在 D:\web\ 下。有yii2框架 并且有目录 backend,frontend 对应域名 admin.yii.com , www.yii.com
在后台上传的时候 别名类的配置都是指向backend\目录下的某个路径。比如某图片上传后实际路径d:\web\backend\web\upload\image.jpg
然后 这些图片 在前台进行浏览的时候 frontend \目录下并没有这些内容。这个时候我如果想显示他 那就需要 http://admin.yii.com/upload\image.jpg

所以我现在想要 后台上传的路劲能否设置为前台的 frontend\web\upload.

如果你想把图片上传的路劲设置为前台的 frontend\web\upload,方法有很多。
最简单的一种:
../的意思是上一级目录,是相对于index.php的路径说的。
如果设置常量的话,@app应该是相对于当期模块的根路径,那就不用它。
在config目录下新建一个constant.php,写入这样一句话:
然后在index.php调用:
然后在图片保存的时候写:
就可以了,而且APP_BASE_PATH这个常量在其他地方也可以使用。总之方法很多,../这个符号可以让你访问到各个目录。
@app/image
即然前后台分离,自然不能使用@web这样的相对路径供客户端进行跨服务访问。访问的路径就应当是指向所属域名的。

登录

找回密码

注册