需要在controller中初始化一些参数
重写init
,beforeAction
,根据你的需要。初始化变量建议重写init
。
重写__construct
这个也行
需要在controller中初始化一些参数
重写init
,beforeAction
,根据你的需要。初始化变量建议重写init
。
重写__construct
这个也行
model模型rules方法的on参数,在更新记录的时候怎么没有验证啊!!大家能不能给我个实例啊!!!!
control层的代码:
if(isset($_POST['User'])){
$user_model= new User('userxg') ;
$userxg=$user_model->findByPk($idt);
$userxg->attributes=$_POST['User'];
if($userxg->save())
$this->redirect("xx");
}
model层的代码:
array('user_qq','required','message'=>'qq必填','on'=>'userxg'),
提交的时候根本没有验证啊!我输入qq为空,他也通过了
先说说你这段代码吧.
on的参数值是预设的scenario,一个是需要先指定scenario,$userxg->scenario = 'userxg';
学习了。土土土土地
因为不了解YII所以整合起来不知道文件放在那里,用什么方式等
问题罗列如下:
1、百度编辑器有很多文件,应该把这些文件放在YII的什么目录呢?如果要拆分放请详细说明。
2、做到编辑器优雅的可复用,而不是死板的代码修改该怎么做?
请详细说明思路,文件位置
每个回答可能都有分,谢谢。
至于你的文件如何放这个需要看的目录架构,没办法给你解答。EditorAsset
和Editor
还有还有资源文件是在同一个目录的。
editor
– assets
– EditorAsset.php
– Editor.php
大概的目录结构是这样子的。
使用方法如下
编辑器素材路径
1 如果可以有composer安装的就composer安装
2 自己编写asset
views的复用
1 views的复用就是widget,富文本编辑器就是一个典型的widget,在github 可以搜索yii2 ckedit 应该可以找到写好了的widget
2 模板抽象之后都是widget,多谢widget好写模板,但是模板服用在前台可能不太好做,后台用起来比较爽
2.0高级版默认分 前台 后台 两组 想在加一个分组 mobile 做手机端的 请教一下怎么才能变成分成 前台 后台 手机端 3组
开玩笑的,本来想给你做个例子的,不过想想其实也没啥技术含量,估计通用性不强,如果后面有需要再说。
主要三个步骤:
1,如@巡洋舰老大所述,仿照frontend,backend的样子,新建一个mobile目录。(可以直接拷过来,但是注意修改里面的命名空间)
2,在environments里面仿照dev/frontend或者prod/frontend的样子把配置文件也拷贝一份。(同样注意修改命名空间等)在index.php中增加对mobile的配置。
3,common/config/bootstrap.php仿照前面的例子增加一个mobile的alias。
4,初始化后,把mobile/web配置到webroot下
这个问题真要回答好费时间,悬赏分太少,不想回答怎么破? 😛
参照 frontend
和 backend
再建一个 mobile
目录。
yii2 后台页面如何控制没有登录的情况下,全部跳转到登录页面?
为了你以后做权限控制,建议增加一个 控制器中间层 在中间层用 beforeAction 做统一的过滤 代码如下
写一些控制器类,如果是游客就跳到登陆页,其它的控制器继承这个类
两个方式,一个是写个控制器基类,然后继承其init方法,然后做判断。
第二个方式是,在Module类里进行处理也是一样的。
各有好处,看你场景。
我用phpstorm
这样七牛会画绿色波浪线,看起来很烦
class QiniuController extends Controller
{
}
这样呢就没有波浪线了,其实感觉还是挺烦囧。
class QiNiuController extends Controller
{
}
IDE的拼写检查而已,可以关掉。如果楼主是强迫症患者,或者想写出可读性高代码,不建议关闭。
然后呢?你想表达什么意思 ? 七牛的英文怎么拼?
是因为你的phpStorm开启词法检查了,咱们的汉语拼音词法检查根本就通不过,建议把词法检查关掉。
phpstorm 是怎么认出qi和niu是两个字的?好神奇
Yii::app()->controller->id
请问这个在yii2 里面该怎么用呢?
Yii::$app->controller->id
Yii::$app你打印这个看看,里面有没有controller和action的
use app\models\Article;
$test1 = Article::find()->where($map)->asArray()->one();
$test2 = Article::find()->where($map)->one();
$test3 = $test2->title;
其中$test2的过程会比$test1过程多一条“SHOW”查询,$test3多两条。
我是想把关联表的查询封装到一个模型内,没有封装时候调试工具显示只有5条查询,一旦将另一个模型封装在当前模型, 就变成了9条。
虽然看起来耗时很短,想问一下这个”show”语句的影响。
一个尝试性的封装,下面的只是一个例子,方式如下:
//文章表如下所示,还有个内容表,内容在内容表的"Content"字段中
namespace api\models;
use sys\core\base\BaseActiveRecord;
class Article extends BaseActiveRecord {
private $_content = null; //表单"content",私有属性:文章内容。
/***********************************此处省略x行代码***********************************************/
//用于获取文章内容
public function getContent() {
if ($this->isNewRecord) {
return null;
} else {
return $this->_content == null ? ArticleContent::findOne($this->content_id)->content : $this->_content;
}
}
调用如下所示:
$articleModel= Article::find()->where($sql)->one();
$articleContent=$articleModel->content;//由于对象$articleModel没有content,会自动调用getContent()方法,就和访问自己的属性一样了
上面这种方式获取文章内容会多出:
SHOW CREATE TABLE `frontend_article_content`
SHOW CREATE TABLE `frontend_article`
SHOW FULL COLUMNS FROM `frontend_article_content`
SHOW FULL COLUMNS FROM `frontend_article`
你看我如果用下面的方式获取文章内容就不会出现”show”语句:
$articleModel= Article::find()->where($sql)->asArray()->one();
$content = ArticleContent::find()->where(['id' => $articleModel['content_id']])->asArray()->one();
但是却少了一些便利性,一定程度上也不能安全的保护数据,毕竟是关联模型。
数据库配置中开启表结构缓存 就没了。
楼上回答的很清楚了,赞一个
楼上回答的很清楚了,赞一个
最近一直用2.0.4进行开发,在开发的过程中发现一个简单的页面,debuger显示的time居然要1600ms。该页面只是连了数据库读取了一个表的数据并显示出来而已。你们用yii2开发的app也是要加载那么久吗?
查看log里面耗时最久的就是渲染view了
21 17:23:14.396 trace yii\base\View::renderFile Rendering view file:
22 17:23:15.051 trace yii\base\View::renderFile Rendering view file:
占了 600多ms
最后自己研究出来了,使用Yii2 必须开启opcache,开启和没有开启真心差好远。php5.5自带的 php5.4请自行安装
开发环境和生产环境差别比较大,没办法一起比较,我测试过,开发环境光加载debugger和gii相关内容就要消耗很多时间
我觉得电脑该时刻是不是内存已经用了很多了,我出现这种情况,time会很快上升,但是关掉几个软件之后又正常了。
Database Queries你的是多少次
我的13次,6个asset绑定,达到300ms
第一次打开比较慢,第二次就比较快了,因为第二次有缓存了。
貌似yii的视图加载是硬伤,没有页面缓存的情况下或者第一次加载时都会比较慢,因为yii的视图渲染差不多就是require_once来加载的嵌套
整合了smarty3,想过这种(当然不行的
function init() {
parent::init();
$this->captobj = new CaptchaAction(yii::$app->controller->id, $this);
$this->_params['captcha_session_code'] = $this->captobj->getVerifyCode();
}
这种可以,不过id随便取似乎不太好。。。
function init() {
parent::init();
$this->captobj = new CaptchaAction(1111, $this);
$this->_params['captcha_session_code'] = $this->captobj->getVerifyCode();
}
试试这样写: