如何在 laravel 中请求 class 中使用 if/else
How to use if/else in request class in laravel
我只使用一个页面作为“创建广告页面”。
如何使用多个验证规则进行查询('type')?
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',
];
}
}
如何使用多个验证规则进行查询('type')?
在请求 class 中,您可以通过 all()
方法访问接收到的数据。
$data = $this->all();
$type = isset($data['type'])? $data['type'] : null;
switch($type) {
case "text":
return [
'url' => 'required'
]
}
注意你在rules()
方法中return是一个普通的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);
我只使用一个页面作为“创建广告页面”。
如何使用多个验证规则进行查询('type')?
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',
];
}
}
如何使用多个验证规则进行查询('type')?
在请求 class 中,您可以通过 all()
方法访问接收到的数据。
$data = $this->all();
$type = isset($data['type'])? $data['type'] : null;
switch($type) {
case "text":
return [
'url' => 'required'
]
}
注意你在rules()
方法中return是一个普通的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);