如何解决如何在Laravel的请求类中使用if / else
我仅将一页用于“创建广告页面”。
如何对查询(“类型”)使用多个验证规则?
ads.blade.php
@if ($request->query('type') == 'text')
//fields
@elseif($request->query('type') == 'post')
//fields
@elseif($request->query('type') == 'banner')
//fields
@endif
AdsRequest.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',];
}
}
如何对查询(“类型”)使用多个验证规则?
解决方法
在请求类中,您可以通过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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。