Как решить проблему проверки формы обновления - PullRequest
0 голосов
/ 26 апреля 2019

В моем Laravel 5.8 я хочу обновить лекарство в моей базе данных.

У меня есть 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'
    ]
]);

1 Ответ

0 голосов
/ 26 апреля 2019

Я бы предложил разделить запросы на создание и обновление формы.

Например, отправьте следующие запросы формы: (MedecinPostRequest или MedecinCreateRequest) и (MedecinPutRequest или MedecinUpdateRequest)

Таким образом, у вас будет более СУХОЙ код. Далее, используйте созданные запросы в вашем классе контроллера следующим образом:

public function create(MedecinPostRequest $request, $id)

public function update(MedecinPutRequest $request, $id)

Таким образом, вы получите больший контроль над входящими запросами, вы можете авторизовать пользователей, если в будущем у вас будет определенная роль, при которой одна роль может создавать только Medecin, а другую - просто для обновления Medecin или любой будущей модели с этим шаблоном.

Теперь, когда у вас есть 2 запроса формы, убедитесь, что в пост-запросе все поля обязательны для заполнения, а в обновлении они обязательны только при наличии. Также в запросе на обновление, если вам нужно игнорировать проверку уникального поля, вы можете сделать это с легкостью. (Пример: имя должно быть уникальным, но может совпадать с обновленной записью.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...