Передача данных от blade-сервера к контроллеру Laravel

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

<a href = "/feestype/{{ $feesType->id }}/edit" class = "btn btn-info btn-sm">Edit</a>

Но когда я хочу получить переданный объект из метода редактирования контроллера, я получаю ноль. Мой код контроллера сейчас выглядит так:

public function edit(FeesType $feesType)
{
    //
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

Здесь я сбрасываю объект $ feeType, но получаю ноль. Пожалуйста, помогите мне решить эту проблему. заранее спасибо

Как выглядит ваше определение маршрута?

Jerodev 09.11.2018 17:08

Route :: resource ('feestype', 'FeesTypesController');

Jahid Hasan 09.11.2018 17:16

Вы решили это? У меня точно такая же проблема. Когда я сбрасываю, он равен нулю.

No One 02.02.2021 21:24
Стоит ли изучать 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 и хотите разрабатывать...
1
3
8 247
3

Ответы 3

Привязка модели маршрута работает немного иначе, здесь документация

Что вам нужно сделать, так это составить такой маршрут:

Route::get('feestype/{feesType}/edit', 'YourController@edit')->name('feestype.edit');

тогда на ваш взгляд

<a href = "{{ route('feestype.edit', $feesType) }}" class = "btn btn-info btn-sm">Edit</a>

-- РЕДАКТИРОВАТЬ

используя файл ресурсов:

Route::resource('feestype', 'YourController')

ссылка будет построена так же, как указано выше:

{{ route('feestype.edit', $feesType) }}

Я использовал ресурсный маршрут

Jahid Hasan 09.11.2018 17:12

используйте php artisan route:list, он покажет вам имя маршрута, который вы используете. И затем используйте это во вспомогательной функции route, которую я использую выше, это будет то же самое

nakov 09.11.2018 17:13

после использования вашего кода я получаю новую ошибку при сбросе: «Попытка получить свойство 'id' не-объекта»

Jahid Hasan 09.11.2018 17:25

это у вас есть в контроллере?

nakov 09.11.2018 17:27

да. теперь мой код контроллера - «редактирование общедоступной функции (FeesType $ feeType) {// $ CommissionType = FeesType :: find ($ feeType-> id); дамп ($ feeType-> имя); возвратный вид ('feestype.edit', ['feeType' => $ feeType]); } '

Jahid Hasan 09.11.2018 17:31

Попробуйте в качестве первой строки в вашем контроллере dd($feesType); и проверьте, привязана ли модель должным образом или что-то еще отсутствует. И убедитесь, что URL-адрес в представлении сгенерирован правильно, но что у вас также есть feestype с этим идентификатором в вашей базе данных.

nakov 09.11.2018 17:33

Модель работает правильно. Я предварительно выполнил создание маршрута с этой моделью. Снова ссылка отображается правильно, и у меня есть данные в базе данных с этим идентификатором.

Jahid Hasan 09.11.2018 17:39

Итак, в какой строке вы получаете эту ошибку? У меня нет вашего кода для отладки.

nakov 09.11.2018 17:40

теперь он показывает другую ошибку. он говорит, что свойство объекта Feestype не существует

Jahid Hasan 09.11.2018 17:45

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

nakov 09.11.2018 17:47

пожалуйста, смотрите в моем разделе ответов

Jahid Hasan 09.11.2018 17:50

Вам следует отредактировать свой вопрос, а не давать ответ на проблему в вашем вопросе, чтобы другие люди могли ответить, если они столкнулись с вашей проблемой.

nakov 09.11.2018 17:55

Теперь код в файле лезвия

<a href = "{{ route('feestype.edit',$feesType) }}" class = "btn btn-info btn-sm">Edit</a>

Файл контроллера содержит этот код:

public function edit(FeesType $feesType)
{
    //
    $feesType = FeesType::find($feesType->id);
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

И вот мое определение маршрута:

Route::resource('feestype','FeesTypesController');

И браузер показывает это сообщение:

А что у вас за сообщение об ошибке? Кстати, вам не нужно делать это снова $feesType = FeesType::find($feesType->id);, поэтому привязка модели предназначена, поэтому параметр $feesType уже должен быть заполнен.

nakov 09.11.2018 17:54

после удаления этой строки теперь это сообщение об ошибке не отображается, но объект снова содержит null

Jahid Hasan 09.11.2018 17:56

попробуйте использовать dd вместо dump, потому что я не знаю, заключается ли проблема в методе контроллера или где-то в представлении, которое вы показываете.

nakov 09.11.2018 17:58

И, пожалуйста, перейдите по ссылке на документацию, которой я поделился в своем ответе, чтобы решить вашу проблему, потому что найти такую ​​проблему действительно сложно. Проведем целый день.

nakov 09.11.2018 17:59

вывод dd добавлен в мой следующий ответ

Jahid Hasan 09.11.2018 18:04

так что проблема не в контроллере, а где-то в поле зрения. И, пожалуйста, продолжайте отладку или поднимите другой вопрос, а не ответ на вашу проблему. Мой ответ хорош для вашей первой проблемы.

nakov 09.11.2018 18:05

с какой точки зрения у меня проблема?

Jahid Hasan 09.11.2018 18:08

Если у меня возникла проблема, то насколько верен мой URL-адрес после нажатия кнопки редактирования?

Jahid Hasan 09.11.2018 18:08

Пожалуйста, используйте нет пространство для ответов, чтобы предоставить дополнительную информацию или задать дополнительные вопросы; место для ответов зарезервировано исключительно для полных и отдельных ответов на вопрос.

desertnaut 17.07.2020 00:22

вам следует изменить свой маршрут на:

Route::put('feestype/{id}/edit', 'YourController@edit');

Для обновления и редактирования вы должны использовать команду put, а не get.

Обратите внимание, что для этого кода:

<a href = "/feestype/{{ $feesType->id }}/edit" class = "btn btn-info btn-sm">Edit</a>

сначала вы должны сжать $ feestype в YourController, а затем использовать свой код в лезвии.

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