2014-09-19 46 views
3

我想知道是否有指定静态路由的方式,以一种动态查找根级页面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]')); 

同样,我不完全确定'动态查找根网址'的含义。

1

解决这个问题的最好方法取决于你对你的“动态”路线所做的努力。

你的路由工作得很好书面,在GET或POST调用的URL http://example.com/admin/usershttp://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语句运行它,也许检查一个可用的View,或者查询数据库 - 否则返回一个NotFoundHttpException

它可能是更好地处理某些此逻辑在routes.php - 用于例如,要求{dynamic_page}满足某些要求,一个数字ID,或许,通过添加

->where('dynamic_page', '[0-9]+');(如乔上面所建议的)。

请注意,您设置的方式只会接受“根级”通配符;带有其他参数(例如http://example.com/some_page/something_else)的呼叫将失败,返回NotFoundHttpException和/或导致404错误页面。

相关问题