请求验证之前的输入操作

时间:2019-12-27 07:44:57

标签: php laravel laravel-6

我在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',
    ];
}

2 个答案:

答案 0 :(得分:2)

您正在xsl:variable中寻找prepareForValidation()方法。

Illuminate\Foundation\Http\FormRequest

示例:

$this->request->set(key, value);

答案 1 :(得分:0)

从这个问题我假设

  1. 您的表单没有名为towncity的字段,但是您有名为citytown的字段,应该由用户以CityName / TownName格式提交

  2. 您打算仅通过拆分citytown字段来在控制器代码中手动添加这些字段。

如果是这种情况,则需要从请求文件中删除towncity的验证规则,此后,您将不会获得这些字段的验证错误。 另外,您需要为citytown类的rules()方法中的ClientRequest字段添加适当的验证规则。

因此,这不是在验证之前进行输入操作的情况,只需为citytown字段添加验证规则并将其拆分为控制器方法即可。