如何解决更新表单问题验证

时间:2019-04-26 10:26:09

标签: laravel laravel-5.8

在Laravel 5.8中,我想更新数据库中的medecin。

我有一个MedecinController和一个用FormRequest更新的方法。

当我犯了一个错误,例如将必填字段留空时,我就会出错。

但是当我在补码字段中进行修改时,什么都没有...没有更新,也没有错误消息。

我的表单包含10个其他必填字段。

你能帮我吗?

MedecinController:

RemoveEmptyEntries

CreateUpdateMedecinRequest:

IEnumerable<string> items = searchterms.Trim().Split(new string[] { Environment.NewLine, }, StringSplitOptions.RemoveEmptyEntries);

路线:

public function update(CreateUpdateMedecinRequest $request, $id)
{
    $medecin = Medecin::findOrFail($id);
    $medecin->m_complement = $request->input('complement');
    $medecin->save();

    return back();
}

1 个答案:

答案 0 :(得分:0)

我建议您将“创建”和“更新”表单请求分开。

例如,发出以下表单请求:(MedecinPostRequestMedecinCreateRequest)和(MedecinPutRequestMedecinUpdateRequest

这样,您将获得更多的DRY代码。接下来,在控制器类中使用创建的请求,如下所示:

public function create(MedecinPostRequest $request, $id)

public function update(MedecinPutRequest $request, $id)

这样做,您将对传入的请求有更多的控制权,并且可以授权用户,前提是您将来拥有某些特定角色,即一个角色只能创建Medecin,而另一个角色只能使用此模式更新Medecin或任何将来的模型。

现在您有2个表单请求,请确保在需要的后期请求中所有字段都是必需的,并且在更新中,仅当存在时才需要它们。同样,在更新请求中,如果您需要忽略唯一字段验证,则可以轻松进行。 (例如:名称必须是唯一的,但可以与更新的记录相同。)