2014-09-19 2 views
3

Im интересно, если есть способ определить статические маршруты, а также способ динамически смотреть вверх странице корневого уровня URL, то, как показано ниже будет в моем routes.php файлаЕсть ли способ смешать статичные с динамическими маршрутами в Laravel 4?

Route::get('admin/users', array('before' => 'isAdmin', 'uses' => '[email protected]')); 
Route::post('admin/users', array('before' => 'isAdmin', 'uses' => '[email protected]')); 

Route::post('profile', '[email protected]'); 

Route::get('{dynamic_page}','[email protected]'); 

Как Я это задал?

ответ

1

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

Route::get('{customer_id}/profile', '[email protected]')->where('customer_id', '[0-9]+'); 

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

Route::get('/', array('as' => 'root', 'uses' => '[email protected]')); 

Опять же, я не совсем уверен, что вы подразумеваете под «динамическим поиском корневого URL».

1

Лучший способ приблизиться к этому зависит от того, что вы пытаетесь сделать со своими «динамическими» маршрутами.

Ваши маршруты работают нормально, как написано, что GET или POST вызовы к URL-http://example.com/admin/users и http://example.com/profile будет перенаправлен к UserController, в то время как любой другой «корень» уровень GET (например, вызывая http://example.com/some_page) маршрут к методу getPage от PageController. Оттуда вы можете получить доступ к {dynamic_page} параметр, и действовать на нем, однако вы хотите:

class PageController extends BaseController { 
    public function getPage($dynamic_page) { 
     // do something here with $dynamic_page: 
     // 
     // for example, return a view based on $dynamic_page 
     //  return View::make($dynamic_page); 
     // 
     // or retrieve a row from the database based on $dynamic_page 
     //  $page = new Page($dynamic_page); 

    return ('The page is '.$dynamic_page);   
    } 
} 

Предположительно, в вашем PageController, вам нужно будет сделать что-то с $ dynamic_page, чтобы убедиться, что правильный ответ доступен -проведите его через оператор switch, возможно, проверьте наличие доступного представления или запросите базу данных, иначе возвращаете NotFoundHttpException.

Вероятно, было бы лучше, чтобы справиться с некоторыми из этой логики в routes.php -для Например, требование {dynamic_page}, чтобы выполнить определенные требования-числовой идентификатор, возможно, путем добавления

->where('dynamic_page', '[0-9]+'); (как было предложено выше Joel).

Обратите внимание, что способ, которым вы его настроили, будет принимать только подстановочный знак «root-level»; вызовы с дополнительными параметрами, такие как http://example.com/some_page/something_else, не будут выполнены, возвращая NotFoundHttpException и/или приводя к странице ошибок 404.

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