Как спроектировать маршрут?

Необходимо добиться следующего результата:

/yarn/
/yarn/alize/
/yarn/alize/lana-gold

/yarn/
/yarn/{manufacturer}/
/yarn/{manufacturer}/{collection}

Сделал так:

Controller

class YarnController extends Controller
{
    /**
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return 'index()';
    }

    /**
     * @param  string  $manufacturer
     * @param  string  $collection
     * @return \Illuminate\Http\Response
     */
    public function show($manufacturer, $collection = null)
    {
        if ($collection) {
            $test = $manufacturer .', '. $collection;
        } else {
            $test = $manufacturer;
        }

        return $test;
    }
}

Route

Route::group(['prefix' => 'yarn'], function() {
    Route::get('/', [YarnController::class, 'index']);
    Route::get('/{manufacturer}/{collection?}', [YarnController::class, 'show']);
});

Боюсь, что в будущем обязательно столкнуть с какими-либо подводными камнями. Несколько раз начинал делать и через N дней приходилось все переделывать из-за неправильного старта. Надеюсь, старшие коллеги помогут.

Если в будущем я захочу вывести пряжу не только по производителям, но еще и по странам, то определенно столкнусь с трудностями.

// /yarn/{country}

Я посмотрел разные работающие сайты и каким то способом у них данная логика реализована, но как именно я не понимаю.


Ответы (0 шт):