Php 在Laravel中验证表单请求中的数据时出现问题
我在Laravel blade中有一个表单,我在验证数据时遇到问题。我以$request->validate(['some_data'=>'some_value'])为例验证了控制器中的数据。我把它放在变量$validatedData中,我在会话put方法和in-fill方法中使用变量bellow,它工作得很好。我所做的是尝试重构代码,并将验证放在FormRequest中,删除变量$validatedData,并将$request替换为它。当我这样做的时候,它显示了一个错误Php 在Laravel中验证表单请求中的数据时出现问题,php,laravel,validation,Php,Laravel,Validation,我在Laravel blade中有一个表单,我在验证数据时遇到问题。我以$request->validate(['some_data'=>'some_value'])为例验证了控制器中的数据。我把它放在变量$validatedData中,我在会话put方法和in-fill方法中使用变量bellow,它工作得很好。我所做的是尝试重构代码,并将验证放在FormRequest中,删除变量$validatedData,并将$request替换为它。当我这样做的时候,它显示了一个错误 Argument 1
Argument 1 passed to Illuminate\Database\Eloquent\Model::fill() must be of the type array, object given
它崩溃了,因为现在$request不像以前那样是一个数组,而是一个对象。我该如何解决这个问题?感谢您的帮助。这是我的密码
控制器
public function postStepOne(FirstFormRequest $request)
{
// $validatedData = $request->validate(['some_data' => 'some_value', etc.]);
if(empty($request->session()->get('questionnaire'))){
$questionnaire = new Questionnaire();
$questionnaire->fill($request); IT WAS $validatedData BEFORE
$request->session()->put('questionnaire', $questionnaire);
} else {
$questionnaire = $request->session()->get('questionnaire');
$questionnaire->fill($request); // IT WAS $validatedData BEFORE
$questionnaire->session()->put('questionnaire', $questionnaire);
}
return redirect()->route('questionnaires.create.step.two');
}
FirstFormRequest
public function rules()
{
return [
'business' => 'required',
'residing' => 'required|in:yes,no',
'different_address' => 'required_if:residing,yes',
'business_address' => 'required_if:different_address,no',
'company_name' => 'required|string|max:255',
];
}
您可以使用
validated
方法从表单请求中获取已验证的输入:
$questionnaire->fill($request->validated());
您可以在一条语句中进行初始化和填充:
$questionnaire = new Questionnaire($request->validated());
您可以使用
validated
方法从表单请求中获取已验证的输入:
$questionnaire->fill($request->validated());
您可以在一条语句中进行初始化和填充:
$questionnaire = new Questionnaire($request->validated());
您是否只想将“已验证”字段传递给
fill(…)
或请求的所有可能输入?@lagbox我想将已验证字段传递给fill method您是否有意不保存模型?@lagbox是的。$request是FirstFormRequest类的对象-因此出现错误。您正试图将$request对象传递给fill方法。您应该执行$inventory->fill($request->all())
或$inventory->fill($request->validated())
是否只将“validated”字段传递给fill(…)
或请求的所有可能输入?@lagbox我想传递已验证的字段以填充方法是否有意不保存模型?@lagbox是的。$request是FirstFormRequest类的对象-因此出现错误。您正试图将$request对象传递给fill方法。你应该做$inventory->fill($request->all())
或$inventory->fill($request->validated())
是的,就是这样,谢谢!关于您编写的一个station初始化和填充,只有一件事。我可以用“新的自我”来调用新的问卷类吗?如果你在模型类的上下文中是的,但是你是从控制器(模型之外)来做的是的,我是从控制器来做的,但是我调用了构造方法QuestionnaireRepository,它调用问卷模型是的,就是这样,谢谢!关于您编写的一个station初始化和填充,只有一件事。我可以用“新的自我”来调用新的问卷类吗?如果你在模型类的上下文中是的,但你是从控制器(模型之外)执行此操作是的,我从控制器执行此操作,但我调用了构造方法QuestionnaireRepository,该方法调用问卷模型