2013-06-11 4 views
0

Есть ли способ объединения этих двух следующих маршрутов?Маршруты объединения Laravel

Route::get('project/(:any)', '[email protected](:1)'); 
Route::get('project/(:any)/(:any)', '[email protected](:1)'); 

Я спрашиваю потому, что второй маршрут, я должен был добавить его для того, чтобы следующие запросы на работу:

site.com/project/new => method 
site.com/project/view/12351326 => method and parameter 

ответ

1

Вы можете использовать регулярное выражение в качестве первого параметра метода get() к объедините их.

См. Раздел Regular Expression Route Constraints в документах.

Нечто подобное может работать:

Route::get('project/{name}', function($name) 
{ 
    // 
}) 
->where('name', '[A-Za-z0-9\/]+'); 

Если регулярное выражение будет соответствовать URL-адреса, такие как /projects/something/anything. Однако это может быть слишком слабым - оно также будет соответствовать /projects/any/number/of/url/segments. Но я считаю, что еще несколько RegEx могут помочь улучшить ограничения, чтобы приблизиться к тому, что вы ищете.

+0

Да, я планирую интегрировать это позже (как это делает facebook) с более сложной логикой, но поскольку время всегда является проблемой, потому что пришлось идти по другому пути ... на данный момент – Alex

+0

есть '-> где() 'доступно в Laravel3? Потому что это не работает для меня – Alex

+0

Документы все еще живут [здесь] (http://three.laravel.com/docs/database/fluent). где() существует, но должно быть в объекте запроса, возвращенном из 'DB :: table ('some_table')'. 'DB :: table ('my_table') -> где ('id', 1) -> get()' – fideloper