Неопределенная переменная: ошибка идентификатора при попытке обновить запись в laravel

Это кажется простым, но я не могу это исправить Я пытаюсь обновить запись в своей базе данных, запись успешно извлекается и отображается в моей форме обновления, но когда я нажимаю кнопку отправки, я получаю сообщение об ошибке Undefined variable: id.

Вот моя форма

<form action = "{{route('Person.update', $person->id)}}" method = "POST">

    @csrf
    {{method_field('PUT')}}
    <div class = "col-md-12" style = "margin-top:20px">
        <div class = "form-group" style = "width: 100%;">
            <label for = "occupation">{{ __('Occupation') }}</label>
            <select class = "form-control" name = "occupation" id = "occupation" required>
                <option selected>{{$person->occupation}}</option>
                <option value = "FE">{{ __('student') }}</option>
                <option value = "Part">{{ __('Business') }} </option>
                <option value = "Bank">{{ __('Civil servant') }} </option>
            </select>
        </div>
    </div>
    <div class = "col-md-6">
        <div class = "input-group" style = "width: 100%;">
            <label for = "id">{{ __('ID') }}</label><br>
            <input type = "text" name = "id" id = "id" class = "form-control" value = "{{$person->id}}" style = "padding: 20px;" readonly>
        </div>
    </div>
    <div class = "col-md-6">
        <div class = "input-group col-md-12" style = "width: 100%;">
            <label for = "name">{{ __('Name') }}</label><br>
            <input type = "text" name = "name" id = "name" class = "form-control" value = "{{$person->name}}" style = "padding: 20px;" readonly>
        </div>
    </div>

    <button type = "submit" class = "btn-primary" style = "padding: 10px; font-size: 16px; border: 0;">{{ __('Submit') }}</button>
</form>

Мой personController

public function edit($id)
{
    $person= Person::find($id);
    return view('pages.update')->with('person', $person);
}

/**
* Update the specified resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{

    //validate
    $this->validate($request,[
        'id' => 'required',
        'name' => 'required',
        'occupation' => 'required',
    ]);

    //store in the database
    $person = Person::find($id);
    $person->id = $request->input('id');
    $person->name = $request->input('name');
    $person->occupation = $request->input('occupation');

    $person->save();

    return redirect('pages.customers');
}

Вот ссылка, по которой я попал в форму редактирования

<a href = "/pages/customers/{{$person->id}}" class = "btn btn-warning">Update</a>

Вы должны опубликовать точную ошибку и указать, где она возникает. Но в вашем методе update()$id действительно не определен. Вместо этого вы, вероятно, захотите $request->input('id').

jeroen 07.12.2018 13:09

В методе update () нет переменной $ id, определенной или полученной. Отправьте нам, пожалуйста, остальной код контроллеров.

Andrii H. 07.12.2018 13:11

Мы не знаем, что именно вам нужно. Какой именно идентификатор вам нужен?

Andrii H. 07.12.2018 13:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
1 752
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны использовать $request->input('id');.

Потому что, когда вы отправляете форму, ссылка создается с помощью /pages/customers/(id which you passed), а ваша операция обновления в функции update.

Пожалуйста, исправьте строку

 $person = Person::find($request->input('id'));

Это правильно + вам нужно удалить person-> id, потому что это избыточно.

Andrii H. 07.12.2018 13:21
Ответ принят как подходящий

просто передайте $ id в метод обновления:

public function update(Request $request, $id)

но вы должны убедиться, что ваш маршрут содержит сегмент {id} в вашем файле маршрутов

Другие вопросы по теме