webirus
@webirus
Тыжверстальщик! Наверстай мне упущенное...

Как правильно написать route в laravel, чтобы передалось две переменные через дефис?

Пытаюсь использовать конструкцию
Route::get("/product/{chpu}-{id}",[\App\Http\Controllers\ProductController::class,'view'])->name('product');

но возвращается null.
Если использовать вместо "-" обычный слэш "/", то всё работает.
Но мне нужен дефис между ЧПУ и айдишником.

Controller
public function view(Request $request, $chpu, $id){

        $product = Product::with('promotion')->where(
            [
                ['chpu', '=', $chpu],
                ['id', '=', $id]
            ]
        )->first();

        return view('Client.product', [
            'product' => $product,
        ]);

    }
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
Sanes
@Sanes
Как сделано у меня.

Route::controller(PostController::class)->prefix('blog')->name('blog.')->group(function (){
    ...
    Route::get('{id}-{alias}', 'show')->name('show');
    ...
});


public function show($id, $alias)
    {
        $post = Post::with('comments')->where(['id' => $id, 'alias' => $alias])->firstOrFail();
        return view(config('cms.theme').'.posts.show', ['post' => $post]);
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
pLavrenov
@pLavrenov
Разработка сайтов
так передай один параметр а потом explode()
Ответ написан
Комментировать
@zvlad_vitamin
Route::get("/product/{chpu}-{id}",[\App\Http\Controllers\ProductController::class, ['chpu', 'id'])->name('product');

Для твоего случая
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы