Динамический маршрут Laravel с динамическим префиксом

Я хотел бы добавить customer_id перед каждым групповым маршрутом следующим способом. Customer_id установлен как Session :: get (‘customer.id’).

Route::group(['prefix' => 'customer/{id}'], function($id) {
Route::get('reports/default', array('as' => 'customer_reports_path', 'uses' => 'ReportController@getDefault'))->before('customer');
Route::get('data/objects/{$object_id}', array('as' => 'customer_reports_object', 'uses' => 'DataController@getObject'));
});

Первый маршрут работает в соответствии с аспектами, однако я не знаю, как правильно использовать второй.

{{ HTML::link(route('customer_reports_object', [Session::get('customer.id'), $object_id], 'Object name') }}

Ссылка все еще заканчивается в 404.

0

Решение

@ Майкл Колеман прав $ знаки не допускаются в параметрах маршрута. И вот почему:

Параметры маршрута находятся в регулярном выражении, которое соответствует только \w (слова) и $ не входит

Illuminate\Routing\Route@compileRoute

$uri = preg_replace('/\{(\w+?)\?\}/', '{$1}', $this->uri);

Решение очевидно состоит в том, чтобы удалить $ (это была, вероятно, опечатка в первую очередь)

Route::get('data/objects/{object_id}'...

И правильно сгенерировать вашу ссылку. (Я также предлагаю вам использовать link_to_route функция)

{{ link_to_route('customer_reports_object', 'Object name', [Session::get('customer.id'), $object_id]) }}
2

Другие решения

Попробуй без $ в параметре, т.е.

Route::get('data/objects/{object_id}', array('as' => 'customer_reports_object', 'uses' => 'DataController@getObject'));
1

По вопросам рекламы [email protected]