yii2-webivan1 / yii2-validate-action-params
扩展 Yii2
v0.0.2
2018-11-05 17:55 UTC
Requires
- php: >=7.0.0
- yiisoft/yii2: 2.0.15.1
Requires (Dev)
- phpunit/phpunit: ^7.4
This package is not auto-updated.
Last update: 2024-09-27 03:27:05 UTC
README
扩展 Yii 2 验证动作参数,依赖注入动作
安装
composer require yii2-webivan1/yii2-validate-action-params
设置
在任何控制器或全局控制器中添加特质以触发 runAction 之前的事件
use webivan\validateAction\ValidateActionTrait;
在控制器中添加行为
public function behaviors() { return [ 'validation' => [ 'class' => webivan\validateAction\ValidateActionBehavior::class, // 'actions' => ['index', 'about'] // Validate only action ] ]; }
使用方法
通过参数动作添加类型 [php7]
public function actionIndex(int $number, string $name, array $data) { // ... }
或通过动作一起添加 phpdoc 并使用 @validate 标签
/** * @validate * @param integer $number * @param string $name * @param array $data */ public function actionIndex($number, $name, array $data) { // ... }
依赖注入
您可以在动作中添加 DI
public function actionIndex(Request $request, int $number, string $name, array $data, Response $response) { // ... }
或 phpdoc。写全路径到类名!
/** * @validate * @param \yii\web\Request $request * @param integer $number * @param string $name * @param array $data * @param Response $response */ public function actionIndex($request, $number, $name, $data, Response $response) { // ... }
添加模型 [ActiveRecord]
// Usually public function actionIndex($cityId) { if (is_null($city = City::findOne(['id' => intval($cityId)]))) { throw new HttpExceprion(404); } return $city; } // Now public function actionIndex(City $city) { return $city; } // Or /** * @validate * @param \app\models\City $city */ public function actionIndexNew($city) { return $city; } // Or /** * @validate * @param City $city */ public function actionIndexNew(City $city) { return $city; }
用户模型
public function beforeAction($action) { if (!parent::beforeAction($action)) { throw new HttpException(404); } return true; } // If user is guest, Error 404 public function actionIndexNew(User $user) { // Error 404 } // If user is login, User::findOne(['id' => \Yii::$app->user->id]) public function actionIndexNew(User $user) { return $user; }
如何更改默认查询 DI?
在模型中添加接口 webivan\validateAction\models\IFindItem
如何更改默认列搜索模型?
在模型中添加接口 webivan\validateAction\models\IFindColumn
许可证
MIT