Почему laravel запускает метод show, когда я нажимаю на сообщение 1 (как на картинке)?
Поскольку шаблон URL в вашем href ссылке соответствует шаблону дляshow
route.
Означает ли это, что каждый раз, когда мы нажимаем на ссылку, метод show будет работать?
Нет.Маршрут show
используется только тогда, когда ваша ссылка соответствует шаблону show
в вашем файле routes/web.php
.Чтобы использовать другой маршрут, используйте другой URL.Например, если вы измените свой URL-адрес со следующего:
<a href="/posts/{{ $item->id }}">
на этот:
<a href="/posts/{{ $item->id }}/edit">
Тогда будет следовать маршрут edit
.
Почему:
Это код ссылки, о которой вы говорите:
<h3><a href="/posts/{{ $item->id }}">{{ $item->title }}</a></h3>
Формация /posts/$id
- формация по умолчанию для show
маршрут в routes/web.php
.
В вашем файле routes/web.php
имеется:
Route::get('/posts/{$id}', 'PostsController@show');
или:
Route::resource('/posts', 'PostsController');
Route::resource
(при использовании с'posts' в этом примере) является сокращением для:
Route::get('/posts', 'PostsController@index');
Route::get('/posts/create', 'PostsController@create');
Route::post('/posts', 'PostsController@store');
Route::get('/posts/{id}', 'PostsController@show');
Route::get('/posts/{id}/edit', 'PostsController@edit');
Route::patch('/posts/{id}', 'PostsController@update');
Route::delete('/posts/{id}', 'PostsController@delete');
Как видите, маршрут show
включен в Route::resource
и соответствует шаблону URL, который вы указали в posts.index
.