如何在 rules() 函数中访问请求 payload/post 数据 - Laravel 表单请求
How to access request payload/post data inside rules() function - Laravel Form Request
我试图在我的 FormRequest 验证器 Class 中的 rules() 函数中访问一个名为“section”的数据。我想做的是检查“section”的值和 return 不同的规则。但显然,我无法访问 data/payload.
的值
我已经从这里检查了答案,但它对我不起作用:
这是我的代码:
FormController.php
class FormController extends Controller
{
public function verify(DynamicFormRequest $request , $section)
{
return response()->json(['success' => 'everything is ok']);
}
}
DynamicFormRequest.php
class DynamicFormRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
error_log($this->request->get('section'));//retruns null and depricated
error_log($this->request->input('section')); //this is absolutely wronge but , i tried it anyways
error_log($this->request->section); //retruns null
error_log($this->section); //retruns null
switch ($this->request->get('section')) {
case '1':
return [
'item_name' => 'required',
];
break;
case 'Type2':
return [
'item_favorite' => 'required',
];
break;
}
}
}
请帮我弄明白怎么了
您可以使用required_if:anotherfield,value
检查其他字段的值
return [
'item_name' => 'required_if:section,1',
'item_favorite' => 'required_if:section,Type2'
]
https://laravel.com/docs/9.x/validation#rule-required-if
希望对您有所帮助
如果您正在使用路由模型绑定,您可以立即使用 $this->section
。
假设您的路线设置格式正确,这应该可以工作:
error_log($this->section);
路线(类似……):
Route::post('section/{section}', [SectionController::class, 'update']);
这个问题可能有帮助:
最后,如果没有您的其他代码,很难知道它是否正常工作。你有没有把 $request
倒出来检查 section
在那里?
我试图在我的 FormRequest 验证器 Class 中的 rules() 函数中访问一个名为“section”的数据。我想做的是检查“section”的值和 return 不同的规则。但显然,我无法访问 data/payload.
的值我已经从这里检查了答案,但它对我不起作用:
这是我的代码:
FormController.php
class FormController extends Controller
{
public function verify(DynamicFormRequest $request , $section)
{
return response()->json(['success' => 'everything is ok']);
}
}
DynamicFormRequest.php
class DynamicFormRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
error_log($this->request->get('section'));//retruns null and depricated
error_log($this->request->input('section')); //this is absolutely wronge but , i tried it anyways
error_log($this->request->section); //retruns null
error_log($this->section); //retruns null
switch ($this->request->get('section')) {
case '1':
return [
'item_name' => 'required',
];
break;
case 'Type2':
return [
'item_favorite' => 'required',
];
break;
}
}
}
请帮我弄明白怎么了
您可以使用required_if:anotherfield,value
检查其他字段的值
return [
'item_name' => 'required_if:section,1',
'item_favorite' => 'required_if:section,Type2'
]
https://laravel.com/docs/9.x/validation#rule-required-if
希望对您有所帮助
如果您正在使用路由模型绑定,您可以立即使用 $this->section
。
假设您的路线设置格式正确,这应该可以工作:
error_log($this->section);
路线(类似……):
Route::post('section/{section}', [SectionController::class, 'update']);
这个问题可能有帮助:
最后,如果没有您的其他代码,很难知道它是否正常工作。你有没有把 $request
倒出来检查 section
在那里?