Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день. В оредной раз обращаюсь за помощью . Работая , а вернее изучая 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)
Не в сети
Топик можно закрывать Всем спасибо за оказанную помощь и понимание.
Не в сети
Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях 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() .
Вопрос- Что я делаю не так ???
Спасибо .
Не в сети
Ресурс-контроллеры обрабатывают запросы согласно стандартам http.
Существует несколько способов обращения к одному и тому же адресу: get, post, put и delete
Метод route просто подставляет урл в тэг <a> при этом он ничего не говорит о способе, которым делается запрос, поэтому код <a href=> для show и delete будет идентичный - через get ипоэтому обработается методом show
Не в сети
Ресурс-контроллеры обрабатывают запросы согласно стандартам 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>
Не в сети
Страницы 1