composer require yii2-webivan1/yii2-validate-action-params
Add trait in any controller or global controller for trigger event before runAction
use webivan\validateAction\ValidateActionTrait;Add behavior in controller
public function behaviors()
{
return [
'validation' => [
'class' => webivan\validateAction\ValidateActionBehavior::class,
// 'actions' => ['index', 'about'] // Validate only action
]
];
} public function actionIndex(int $number, string $name, array $data)
{
// ...
} /**
* @validate
* @param integer $number
* @param string $name
* @param array $data
*/
public function actionIndex($number, $name, array $data)
{
// ...
} public function actionIndex(Request $request, int $number, string $name, array $data, Response $response)
{
// ...
} /**
* @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)
{
// ...
} // 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;
}Add interface webivan\validateAction\models\IFindItem in model
Add interface webivan\validateAction\models\IFindColumn in model
MIT