Laravel передает данные в контроллер, используя параметр контроллера и запрос

Я новичок в Laravel и в веб-программировании. Я видел лектора в учебнике, он проходит id к контроллеру с помощью параметра контроллера
Route::get('/post/{id}', ['as'=>'home.post', 'uses'=>'AdminPostsController@post']); какая разница по сравнению с передачей id через $request параметр от контроллера?
Не могли бы вы сказать мне, когда использовать любой параметр контроллера и запрос.

2 ответа

Решение

Один из способов объяснить это - обратиться к HTTP-глаголу GET, к которому вы обращаетесь.

Для запроса GET о возврате сообщения с идентификатором 1 у вас будет два варианта:

  1. /post/{id}

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

public function view($id)
{
    $post = Post::find($id);
    ...
}
  1. /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);
}
Другие вопросы по тегам