Laravel自定义场景验证规则 自定义验证

  • 新建AdminRequest.php验证文件
namespace App\Http\Requests\Admin\Account;

use App\Helpers\Traits\SceneValidatorTrait;
use Illuminate\Foundation\Http\FormRequest;

class AdminRequest extends FormRequest
{
    use SceneValidatorTrait;


    /**
     * 自动验证关闭
     * @return bool
     */
    public function autoValidate()
    {
        return false;
    }

    /**
     * 某些场景下可单独开启关闭
     * @return false|void
     */
//    public function autoValidate(){
//        $sceneName = $this->getSceneName();
//        //add 场景下关闭自动验证
//        if(in_array($sceneName,['add'])){
//            return  false;
//        }
//    }

    /**
     * @return array
     */
    public function rules()
    {
        return [
            'id'        => 'required',
            'username'  => 'required|unique:admin|max:20',
            'password'  => 'required',
        ];
    }

    public function messages()
    {
        return [
            'id.required'                => '缺少参数ID',
            'username.required'          => '请输入用户名',
            'username.unique'            => '用户名已存在',
            'username.max'               => '用户名最大20个字符',
            'password.required'          => '请输入密码',
        ];
    }

    /**
     * 场景规则
     * @return array
     */
    public function scene()
    {
        return [
            //add 场景
            'add' => [
                'username', 'password',
                //可以重置规则
//                'username' => 'required|unique:admin|max:20'
            ],
            //edit场景
            'edit' => ['id', 'username', 'password'],
        ];
    }
  • Controller文件
public function add(AdminRequest $request){
        if (IS_POST){
            $request->validate('add');
            $params = $request->all();
            if ($params) {
                return AdminService::getInstance()->add($params);
            }else{
                return $this->retError('Parameter error');
            }
        }
    }
© 版权声明
THE END
喜欢就支持一下吧
分享