Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.01.2019 22:55:57

Странное поведение маршрутов(route) в Laravel

Добрый день. В оредной раз обращаюсь за помощью . Работая , а вернее изучая Laravel , я начал замечать странное поведение маршрутов и контроллеров . Самостоятельно пока ответа на вопрос не нашел , но очень хочется разобраться в причине . А именно , имеет ли значение порядок расположения маршрутов в файле. Если да , то по какому принципу срабатывают маршруты , и где можно прочитать правила или рекомендации написания маршрутов . Во всех документациях только краткое описание. Вот например пример из рабочего проэкта.
Имеютса два маршрута . Если эти два маршрута расположены в таком порядке. То все работает нормально . Но если я их поменяю местами , то возникает ошибка .

/**************************** CartController *************************/   
Route::get('shopping/{product_id}', 'ShoppingcartController@uzsakymas')->name('uzsakymas');

/**************************** ProductController *************************/
Route::get('/{department}/{department_id}','ProductController@product_department')->name('product_department');

/**************************** ProductController *************************/
Route::get('/{department}/{department_id}','ProductController@product_department')->name('product_department');
/**************************** CartController *************************/   
Route::get('shopping/{product_id}', 'ShoppingcartController@uzsakymas')->name('uzsakymas');

Вот код ошибки.

 ErrorException (E_ERROR)
Trying to get property 'name' of non-object (View: C:\XAMPP\htdocs\apsaugajums\resources\views\products\product_list.blade.php)

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

Изменено DzonyBB (08.01.2019 22:57:38)

Не в сети

#2 12.01.2019 17:38:26

Re: Странное поведение маршрутов(route) в Laravel

Топик можно закрывать Всем спасибо за оказанную помощь и понимание. lol big_smile lol

Не в сети

#3 13.12.2020 23:12:53

Re: Странное поведение маршрутов(route) в Laravel

Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях Laravel решил воспользоваться этими прелестями .

создал контроллер в artisan

php artisan make:controleer TestController --resource

Контроллер создается , проблем нет . Теперь создаем маршруты .

Route::resource('tests', TestController::class);

запускаем команду

php artisan route:list

Список маршрутов отображается согласно документации .
А вот теперь начинается самое интересное.
Создаю на кнопку или ссылку с указанием имени маршрута например

<a href="{{route('tests.show',['test'=>10])}}">Test Show</a>

в контроллере функция show() срабатывает
А если создаю

<a href="{{route('tests.destroy',['test'=>10])}}">Test Destroy</a>

То все равно срабатывает ссылка Test Show, т.е в контроллере срабатывает функция show() .
Вопрос- Что я делаю не так ???
Спасибо .

Не в сети

#4 14.12.2020 01:10:26

Re: Странное поведение маршрутов(route) в Laravel

Ресурс-контроллеры обрабатывают запросы согласно стандартам http.
Существует несколько способов обращения к одному и тому же адресу: get, post, put и delete
Метод route просто подставляет урл в тэг <a> при этом он ничего не говорит о способе, которым делается запрос, поэтому код <a href=> для show и delete будет идентичный - через get ипоэтому обработается методом show

Не в сети

#5 14.12.2020 13:36:12

Re: Странное поведение маршрутов(route) в Laravel

Ресурс-контроллеры обрабатывают запросы согласно стандартам http.Существует несколько способов обращения к одному и тому же адресу: get, post, put и deleteМетод route просто подставляет урл в тэг <a> при этом он ничего не говорит о способе, которым делается запрос, поэтому код <a href=> для show и delete будет идентичный - через get ипоэтому обработается методом show

  Спасибо за ответ , уже разобрался , сделал через форму ,

<form method="POST" action="{{route('blogs.destroy',['blog'=>45677])}}">
@csrf
<button  type="submit" class="btn btn-success" name="delete" value="delete">Delete</button>
@method('DELETE')
</form>

Не в сети

Подвал раздела