Yii2-Unable to resolve the relative route

若出现标题所描述的错误,检查下当前controller的init()方法中是否含有 $this->redirect() 之类的方法,这类方法不可以放在init()中,但可以放在 beforeAction($action) 中。

每个action都希望检查登录状态的话,可以在controller的beforeAction($action)中判断,如下

备注

  1. yii2的执行顺序是, init() -> beforeAction() -> 指定的action() -> afterAction()
  2. 若beforeAction()不返回true,则不会执行下一步

Yii2之rules(),validate(),save(),save(false)

在model文件中,若提供 public function rules() 方法,则在使用 $model->validate() ,和 $model->save() 方法时,会被调用,用于检查数据是否满足要求。

若满足要求,返回true,否则返回false,在返回false时,可以通过

获取错误信息(二维数组)。

若想跳过rule()规则检查,可以使用 $model->save(false) 。

 

【参考:】http://www.yiichina.com/doc/guide/2.0/input-validation

Yii2打印SQL语句

通过以下方式可以打印SQL语句:

 

Yii2制作restful接口时定义更多的action

默认情况下,yii2的restful规则提供了view, index, post等action,但一般情况下是不够用的,可以通过以下方式自定义更多的action。

1.在指定的controller中定义action,如 public function actionLogin()

2.在项目的配置文件中(如main.php)的urlManager中配置自定义的action,如

以上配置说明,自定义的actionSearch()只支持POST请求,浏览器请求的相对路径是v1/user/search/<name>,真正触发的是v1模块,userController的actionSearch($name)方法

 

【参考】https://stackoverflow.com/questions/25701247/yii2-restful-api-example-to-add-a-new-action

Yii2的Controllers中部分action使用access-token认证

一个controllers中可能部分action需要access-token认证,部分action不需要,可以通过以下方式实现: