如何在 Laravel 的请求类中使用 if/else

我只使用一个页面来“创建广告页面”。


如何对查询('type')使用多个验证规则?


广告刀片.php


@if ($request->query('type') == 'text')


   //fields


@elseif($request->query('type') == 'post')


   //fields


@elseif($request->query('type') == 'banner')


   //fields


@endif

广告请求.php


public function rules(Request $request)

{


    //this if not work. how to resolve?


    if ($request->query('type') == 'text'){

        return [

            'title'  => ['required','max:255', Rule::unique('ads')->ignore($this->route('ad'))],

            'url' => 'required',

            'type' => 'required|in:text,banner,post,sidebar',

            'status' => 'nullable',

            'btn' => 'nullable',

            'pic' => 'nullable',

            'description' => 'required',

        ];

    }

}

如何对查询('type')使用多个验证规则?


互换的青春
浏览 72回答 1
1回答

慕的地6264312

在请求类中,您可以通过方法访问接收到的数据all()。$data = $this->all();$type = isset($data['type'])? $data['type'] : null;switch($type) {     case "text":         return [           'url' => 'required'        ]}请注意,该rules()方法返回的是一个普通的 PHP 数组,它可以是不同数组的合并。您可能有一些与此type字段无关的规则。$commonRules = [   'title' => 'required',   'email' => 'required|email',];$specificRules = [];$data = $this->all();$type = isset($data['type'])? $data['type'] : null;switch($type) {     case "text":         $specificRules = [           'url' => 'required',        ];        break;     case "foo":        $specificRules = [            'btn' => 'nullable',        ];        break;}return array_merge($commonRules, $specificRules);
打开App,查看更多内容
随时随地看视频慕课网APP