Laravel создаст маршрут с слагом и id - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время у меня есть

Route::get('properties/{id}', 'InfoController@show');

И ссылка выглядит как mydoamin.com/properties/1

Есть ли возможность создать маршрут для properties/id/slug(from title)?

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

Добавьте это в свой ModelController (с полем слагов и обычной функцией CRUD show)

public function slug($slug) { return $this->show(Model::where('slug', $slug)->firstOrFail()); }

Добавьте этот маршрут в web.php (чтобы соответствовать всем не-числовым слагам, не содержащим '/'

Route::get ('model/{slug}', 'ModelController@slug')->where(['slug' => '^(?!((.*/)|(create$))).*\D+.*$']);

Убедитесь, что оно предшествует

Route::resource('model', 'ModelController');

Вы будете сопоставлять любые нечисловые слагы, но проходите через целые числа к обычному маршруту.

0 голосов
/ 12 июня 2018

Вы можете отредактировать маршрут на Route::get('properties/{id}/{slug}', 'InfoController@show');

Проверка того, может ли слаг соответствовать заголовку, должна быть помещена в контроллер.

0 голосов
/ 12 июня 2018

Да, вы можете добиться этого, выполнив следующие действия:

Обновите ваш маршрут:

Route::get('properties/{id}/{slug}', 'InfoController@show');

Затем примите маршрут в вашем контроллере и проверьте, существует ли допустимая модель с заданным значением.id и slug.

public function show($id, $slug) {
    $model = Model::where('id', $id)
                  ->where('slug', $slug)
                  ->first();

    if(! $model) {
        // handle error here
    }

    return view('show', compact('model'));
}    

(Обратите внимание, что проверку также можно выполнить путем создания пользовательского запроса формы: https://laravel.com/docs/5.6/validation#form-request-validation)

0 голосов
/ 12 июня 2018

да, вы можете сделать это,

Route::get('properties/{id}/{title}', 'InfoController@show');

при включенной функции шоу

public function show ($id, $title) {

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...