我在Laravel中创建了请求表单验证,但是当我想添加新的输入字段时,它不起作用。在我的表单中,没有名为镇或城市的输入。我只想在Controller中添加一个。
$request->all() // returns perfect with new inputs.
$request->validated() // returns without new inputs. because of that validation fails.
ClientController.php
public function update(ClientRequest $request, Client $client)
{
$request->merge([
'city' => explode('/', $request->post('citytown'))[0],
'town' => explode('/', $request->post('citytown'))[1]
]);
$validated = $request->validated();
Client::whereId($client->id)->update($validated);
return redirect('/clients')->with('success', 'success');
}
ClientRequest.php
public function rules()
{
return [
'email' => "required|email|max:254|unique:clients,email,{$this->route()->client->id}",
'fullname' => 'required|max:128',
'idnumber' => "required|max:11|unique:clients,idnumber,{$this->route()->client->id}",
'gender' => 'required|digits_between:1,2',
'phone' => "required|max:10|unique:clients,phone,{$this->route()->client->id}",
'adress' => 'required',
'town' => 'required',
'city' => 'required',
];
}
答案 0 :(得分:2)
您正在xsl:variable
中寻找prepareForValidation()
方法。
Illuminate\Foundation\Http\FormRequest
示例:
$this->request->set(key, value);
答案 1 :(得分:0)
从这个问题我假设
您的表单没有名为town
和city
的字段,但是您有名为citytown
的字段,应该由用户以CityName / TownName格式提交
您打算仅通过拆分citytown
字段来在控制器代码中手动添加这些字段。
如果是这种情况,则需要从请求文件中删除town
和city
的验证规则,此后,您将不会获得这些字段的验证错误。
另外,您需要为citytown
类的rules()
方法中的ClientRequest
字段添加适当的验证规则。
因此,这不是在验证之前进行输入操作的情况,只需为citytown字段添加验证规则并将其拆分为控制器方法即可。