由于处在边学边做的状态,所以犯二出现低级错误是不可避免的,用这篇来记一下Yii开发中使用其内建方法是一些不能缺少的东西。
1.在使用setFlash()、hasFlash()、getFlash()这一套方法设置弹窗时,注意在视图页面传递class参数
echo Alert::widget([
'options' => [
'class' => 'alert-success',
],
'body' => \Yii::$app->getSession()->getFlash('success'),
]);
也就是要有'options'参数,否则似乎无法显示?
2.编写模型的时候,对于其继承的父类中的一些空函数要进行编写,如
class Admin extends ActiveRecord implements IdentityInterface
中的IdentityInterface中有findIdentity()、findIdentityByAccessToken()、getId()、getAuthKey()、validateAuthKey()五个空函数,在编写Admin模型的时候都要声明这些函数,否则是无法运行的(会认为这些函数未定义),(疑问):但从个人理解,这些函数我似乎都没有用到,为什么一定要声明呢?
3.在编辑系统用户的模型时,除了要把LoginForm.php复制一份到对应的模块(这一步是否必须存疑,因为common中有该文件)并将tableName()复写为自己数据库中对应的表名外,还要将common\models\User.php中的tableName()也进行同样的复写。
4.foreach所处理的参数是数组,因此传参时注意写成数组;注意控制器里的behavior()使用foreach处理,要return一个数组
5.控制器中进行权限控制的方法behavior()如下
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['index','create','view','modify','delete'],
'rules' => [
[
'allow' => TRUE,
'actions' => ['index','create','view','modify','delete'],
'roles' => ['@'],
],
],
],
];
}
其中要注意'rules'、'actions'、'roles'的复数形式;'roles'的值可以为'@'(需要验证\登陆后才可以访问'actions')或'?'(不需要验证就可以访问)
6.模型文件的rules()中的一些验证规则,如require、compare等,都是框架中预定义好了的。因此,如果要自定义规则,需要注意避开这些预定义的验证规则。错误的具体表现是调用了一个意料之外的变量,错误提示中也会指出冲突的规则处于哪个文件中,需要自行注意发现。
7.“不安全又不在rules里边的属性不能被批量赋值操作赋值”,所以写模型的时候吧要从表单获取的变量全在rules()里写上。
疑问:
1.在对一个数据表的所有数据进行排序的时候,代码为
$events = $events
->offset($pagination->offset)
->limit($pagination->limit)
->orderBy(['id' => SORT_DESC])
->with('author')
->all();
这里的with是什么意思?而且这个with似乎会带来一些错误......
(未完待续)