为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
互换的青春 2023-09-22 16:51:51
我只使用一个页面来“创建广告页面”。如何对查询('type')使用多个验证规则?广告刀片.php@if ($request->query('type') == 'text')   //fields@elseif($request->query('type') == 'post')   //fields@elseif($request->query('type') == 'banner')   //fields@endif广告请求.phppublic 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')使用多个验证规则?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

在请求类中,您可以通过方法访问接收到的数据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);


查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信