Laravel по-русски

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

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

#1 17.11.2018 14:53:46

ЧПУ взять параметры из url и передать в контроллер

есть ЧПУ такого вида
http://localhost/reviews/ford
нужно взять второй параметр [ford] и передать в контроллер для соответствующей обработки.
я так понимаю это нужно делать в роутинге, вот у меня там такая строка:

Route::paginate('reviews/{mark?}', ['as' => 'reviews','uses' =>'ReviewsController@listReviews']);

Вопрос, каким образом мне там получить 2-ой параметр [ford] и передать в контроллер?

Не в сети

#2 19.11.2018 10:00:47

Re: ЧПУ взять параметры из url и передать в контроллер

В роутере:

Route::get('reviews/ford', 'NameController@fordall');
Route::get('reviews/ford/{idford}', 'NameController@fordgo');

В контроллере:

public function fordall(){
$fords= Ford::all()
return view('page.fords',[
'fords' => $fords,
]);
}

public function fordgo($idford){
$ford = Ford::where('id', $idford)->get()->first();
return view('page.ford',[
'ford' => $ford,
]);
}

Есть гет запросы: Route::get('reviews/ford', 'NameController@fordall'); - показать нам все форды (с пагиницией, количество элементов в контроллере - функция для пагинации {{ $fords->links() }} -> то о чем вы писали в ваш роутер нужно писать сюда, какие то может якоря и т.д. может 2 пагинации быть на странице как пример.

Есть гет запрос 2ой: Route::get('reviews/ford/{idford}', 'NameController@fordgo'); - показать нам конкретный форд, тут мы как раз и передаём в динамическую данную например {idford} - ид форда, и вы его передаёте таким методом в контроллер, в котором вы ищите по ид в базе нужный вам форд и послываете на вьювер, в вьювере вы уже себе отображаете как хотите.

Делайте ваше приложение правильно с начала.
Используйте Route::get, Route::post, Route::resource, Пагинация должна быть на стороне клиента, нечего ей делать на стороне сервера! Вы уже передаёте с сервера построенную пагинацию!

Не в сети

#3 19.11.2018 10:04:42

Re: ЧПУ взять параметры из url и передать в контроллер

А если вы хотите передать в контроллер 2штучки

Route::get('reviews/ford/{idford}/{colorford}', 'NameController@fordgowithcolor');

Контроллер

public function fordgowithcolor($idford, $colorford){
$ford = Ford::where('id', $idford)->where('color', $colorford)->get()->first();
return view('page.ford',[
'ford' => $ford,
]);
}

Не в сети

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