Php Laravel:嵌套控制器并使父控制器重定向到子控制器?
这是我在拉雷维尔的第一个项目,所以和我好好玩吧 目标是创建一个CMS。每个页面都有自己的“slug”,所以如果我给一个页面命名Php Laravel:嵌套控制器并使父控制器重定向到子控制器?,php,model,routes,nested-class,laravel,Php,Model,Routes,Nested Class,Laravel,这是我在拉雷维尔的第一个项目,所以和我好好玩吧 目标是创建一个CMS。每个页面都有自己的“slug”,所以如果我给一个页面命名这是一个测试,它的slug将是这是一个测试。我想通过进入example.com/this-is-a-test查看该页面 要做到这一点,我想我必须做如下事情: Route::any('(:any)', 'view@index'); 并使用索引方法创建名为View的控制器。很好,对吗 问题是创建管理区域。我将在该区域内有一些页面,一些示例是仪表板、页面、设置和工具。因为所有
这是一个测试
,它的slug将是这是一个测试
。我想通过进入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'));
这是我的管理面板控制器:
class Admin_Dashboard_Controller extends Base_Controller {
public $restful = true;
public function get_index()
{
return 'in dashboard';
}
}
视图控制器只显示一个指向管理页面的链接,这是有效的。我就是搞不清楚管理员路线出了什么问题?当我进入
/admin
或管理员/仪表板
时,我只得到一个空白页面,没有404。如果我去admin/blah
或者只是blabla
我会得到一个404,所以我知道有什么事情发生了,只是发生得不正确。我遗漏了什么吗?我误解了控制器的命名约定
事情是这样的:
假设是:
controllers
admin
dashboard.php Containing controller Admin_Dashboard_Controller
换句话说,我不应该在控制器文件名的开头加上“admin”。现在一切都好了
实际上,我还可以将路由代码缩小为:
Route::get(array('admin', 'admin/dashboard'), array('as' => 'admin', 'uses' => 'admin.dashboard@index'));
是否可能关闭了PHP错误报告?谢谢您的示例!以下是面向未来人士的文档:
Route::get(array('admin', 'admin/dashboard'), array('as' => 'admin', 'uses' => 'admin.dashboard@index'));