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

问题描述 投票:0回答:1

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

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

当我犯了一个错误就像把一个必填字段放空时,我有一个错误。

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

我的表单包含其他10个不需要的字段。

你能帮助我吗 ?

MedecinController:

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

    return back();
}

CreateUpdateMedecinRequest:

/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    if(Auth::user()->hasRole([7,6]))
    {
        return true;
    }

    return false;
}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'nom' => 'required',
        'adresse' => 'required',
        'cp' => 'required|max:5',
        'ville' => 'required',
        'telephone' => 'required',
        'specialite' => 'required',
    ];
}

路线:

Route::resource('medecins', 'Medecin\MedecinController', [
    'only' => ['index', 'create', 'store', 'edit', 'update'],
    'names' => [
        'index' => 'viewMedecins',
        'create' => 'createMedecin',
        'store' => 'storeMedecin',
        'edit' => 'editMedecin',
        'update' => 'updateMedecin'
    ]
]);
laravel laravel-5.8
1个回答
0
投票

我建议您分别创建和更新表单请求。

例如,请提出以下表格请求:(MedecinPostRequestMedecinCreateRequest)和(MedecinPutRequestMedecinUpdateRequest

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

public function create(MedecinPostRequest $request, $id)

public function update(MedecinPutRequest $request, $id)

通过这样做,您可以更好地控制传入的请求,如果您将来有一些特定的角色,一个角色只能创建Medecin,而另一个角色只是为了更新Medecin或任何未来的模型,您可以授权用户。

现在您有2个表单请求,请确保在需要的post请求中需要所有字段,并且在更新中,仅在存在时才需要它们。此外,在更新请求中,如果您需要忽略唯一字段验证,则可以轻松完成。 (示例:name必须是唯一的,但可以与更新的记录相同。)

© www.soinside.com 2019 - 2024. All rights reserved.