【问题标题】:Laravel: Nesting controllers and making parent controller redirect to children?Laravel:嵌套控制器并使父控制器重定向到子控制器?
【发布时间】:2012-10-27 22:12:51
【问题描述】:

这是我在 Laravel 的第一个项目,所以和我一起玩吧!

目标是创建一个 CMS。每个页面都有自己的“slug”,所以如果我将页面命名为This is a test,那么它的slug 将是this-is-a-test。我希望能够通过转到example.com/this-is-a-test 来查看该页面。

要做到这一点,我猜我必须这样做:

Route::any('(:any)', 'view@index');

并使用索引方法创建一个名为 View 的控制器。都很好,对吧?

问题在于创建管理区域。我将在该区域内创建几个页面,例如仪表板、页面、设置和工具。由于所有这些都是管理中的子页面,我认为将它们设为嵌套控制器是合适的,对吧?唯一的问题是,当我访问/admin 时,我想直接显示仪表板(/admin/dashboard)。我宁愿只调用仪表板控制器,而不是从管理控制器重定向到/admin/dashboard。这可能吗?

所以,为了说明我的意思:

example.com/admin -> loads admin.dashboard
example.com/admin/dashboard -> also loads admin.dashboard

这是我所有的路线:

Route::get('admin', array('as' => 'admin', 'use' => 'admin.dashboard@index'));
Route::get('admin/dashboard', array('as' => 'admin_dashboard', 'use' => 
Route::any('/', 'view@index'); // Also, should this be below or above the admin routes? This route will show the actual cms pages.'admin.dashboard@index'));

这是我的 admin_dashboard 控制器:

class Admin_Dashboard_Controller extends Base_Controller {

    public $restful = true;    

    public function get_index()
    {
        return 'in dashboard';
    }

}

视图控制器只显示一个到管理页面的链接,这是有效的。我只是无法弄清楚管理路线有什么问题?当我转到 /adminadmin/dashboard 时,我只得到一个空白页,没有 404。如果我转到 admin/blah 或只是 blabla 我得到一个 404,所以我知道 something 是正在发生,只是没有正确发生。我错过了什么吗?

【问题讨论】:

  • 您是否可能关闭了 PHP 错误报告?

标签: php model routes nested-class laravel


【解决方案1】:

我误解了控制器的命名约定。

原来是这样的

controllers
    admin
        admin_dashboard.php   Containing controller Admin_Dashboard_Controller

应该是这样的:

controllers
    admin
        dashboard.php         Containing controller Admin_Dashboard_Controller

换句话说,我不应该在控制器文件名的开头添加“admin”。现在一切正常。

我实际上也能够将路由代码缩小到这个:

Route::get(array('admin', 'admin/dashboard'), array('as' => 'admin', 'uses' => 'admin.dashboard@index'));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-12-12
  • 2017-10-08
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多