yii2-webivan1/yii2-validate-action-params

扩展 Yii2

安装: 89

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 1

类型:yii2-extension

v0.0.2 2018-11-05 17:55 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