2015-01-21 2 views
0

Я хотел бы добавить customer_id перед каждым групповым маршрутом с помощью следующего подхода. Customer_id устанавливается как Session :: get ('customer.id').Динамический маршрут Laravel с динамическим префиксом

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

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

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

Связь по-прежнему заканчивается в 404.

+1

Ваш синтаксис на этот код немного выключен. Попробуйте это: '{{link_to_route ('customer_reports_object', 'Object name', [Session :: get ('customer.id'), $ object_id])}}' – lukasgeiter

ответ

2

@MichaelColeman является правильным $ признаки не позволяют в параметрах маршрута. И вот почему:

Параметры маршрута найдены в Regex, который соответствует только \w (слова) и $ не включен.

Illuminate\Routing\[email protected]

$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]) }} 
+1

cool, вероятно, стоит отметить также, что функция 'link_to_route' фактически использует синтаксис * literal * link_to_route" - в противном случае ваш предыдущий комментарий прочитал (для меня так или иначе), как '{{insert_your_route_here ('custome ....)}}'. то есть 'link_to_route является вспомогательной функцией laravel

1

Try без $ в параметре т.е.

Route::get('data/objects/{object_id}', array('as' => 'customer_reports_object', 'uses' => '[email protected]')); 
+0

Это работает с добавлением lukasgeiter! – wiesson

+0

отлично, не могли бы вы опубликовать, какой фактический (исправленный) код вам нужно использовать в своем HTML, чтобы получить ссылку, работая, пожалуйста, мне было бы интересно узнать, что вы использовали –

+0

Не волнуйтесь, я вижу, что означает @lukasgeiter –

Смежные вопросы