Laravel передает данные в контроллер, используя параметр контроллера и запрос
Я новичок в Laravel и в веб-программировании. Я видел лектора в учебнике, он проходит id
к контроллеру с помощью параметра контроллера Route::get('/post/{id}', ['as'=>'home.post', 'uses'=>'AdminPostsController@post']);
какая разница по сравнению с передачей id
через $request
параметр от контроллера?
Не могли бы вы сказать мне, когда использовать любой параметр контроллера и запрос.
2 ответа
Один из способов объяснить это - обратиться к HTTP-глаголу GET, к которому вы обращаетесь.
Для запроса GET о возврате сообщения с идентификатором 1 у вас будет два варианта:
/post/{id}
Используя этот метод (спокойное соглашение), вам нужно будет передать переменную в качестве параметра в действие вашего контроллера, чтобы получить к нему доступ.
public function view($id)
{
$post = Post::find($id);
...
}
/post?id=1
Используя этот метод, вы передаете идентификатор в качестве параметра строки запроса внутри URL. Затем внутри контроллера вы получаете доступ к значению из запроса.
public function view(Request $request)
{
$post = Post::find($request->input('id'));
...
}
Теперь предположим, что вы хотите создать новый Post
это, как правило, HTTP-запрос POST глагола к /post
конечная точка, где вы получаете доступ к полезной нагрузке формы, используя Request
,
public function create(Request $request)
{
$post = Post::create($request->only('description'));
}
Теперь допустим, вы хотите обновить текущий Post
это, как правило, HTTP-запрос глагола PUT к /post/{id}
конечная точка, где вы получите модель через параметр, а затем обновите данные с помощью запроса.
public funciton update(Request $request, $id)
{
$post = Post::find($id);
$post->update($request->only('description'));
}
Поэтому иногда вы будете использовать комбинацию параметров контроллера с запросом. Но обычно параметр контроллера предназначен для отдельных элементов внутри маршрутов, к которым вам нужен доступ.
Предполагая, что вы новичок в веб-разработке, особенно в Laravel, я предлагаю вам прочитать документацию Laravel. posts/{id}
получить значение модели поста, соответствующее этому идентификатору.
Route::get('/post/1', 'AdminPostsController@post']); -> returns post that has an ID 1.
Когда отправить запрос, как это posts/1
он внедрит вашу модель и вернет соответствующее значение идентификатора
Или вы можете обрабатывать вручную через контроллер с соответствующим идентификатором.
public function posts(Request $request)
{
returns Posts::find($request->id);
}