【问题标题】:Is there a way to mix static with dynamic routes in Laravel 4?有没有办法在 Laravel 4 中混合静态路由和动态路由?
【发布时间】:2014-11-14 13:47:16
【问题描述】:

我想知道是否有一种方法可以指定静态路由,以及一种动态查找根级页面 url 的方法,我的 routes.php 文件中会出现如下内容

Route::get('admin/users', array('before' => 'isAdmin', 'uses' => 'UserController@userAdministration'));
Route::post('admin/users', array('before' => 'isAdmin', 'uses' => 'UserController@userList'));

Route::post('profile', 'UserController@profile');

Route::get('{dynamic_page}','PageController@getPage');

我该如何设置?

【问题讨论】:

    标签: php laravel url-routing laravel-routing


    【解决方案1】:

    解决此问题的最佳方法取决于您尝试使用“动态”路线做什么。

    您的路由可以正常工作,因为对 URL http://example.com/admin/usershttp://example.com/profile 的 GET 或 POST 调用将被路由到 UserController,而任何其他“根”级别的 GET(例如调用 http://example.com/some_page)将路由到PageControllergetPage 方法。从那里,您可以访问 {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} 满足某些要求——一个数字 ID,也许,通过添加

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

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

    【讨论】:

      【解决方案2】:

      我也不清楚你在问什么。但动态路由的示例如下(注意参数 customer_id 及其使用方式):

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

      根 url 路由可能如下所示:

      Route::get('/', array('as' => 'root', 'uses' => 'RootController@showRoot'));
      

      同样,我不完全确定您所说的“动态查找根 url”是什么意思。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-01
        • 2018-12-30
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 2019-02-19
        相关资源
        最近更新 更多