“有的东西不写是运行不了的”——第一个项目过程中的一些错漏

由于处在边学边做的状态,所以犯二出现低级错误是不可避免的,用这篇来记一下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似乎会带来一些错误......

(未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值