这是我在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';
}
}
视图控制器只显示指向管理页面的链接。我只是无法弄清楚管理路线有什么问题?当我转到/admin
或admin/dashboard
时,我会得到一个空白页面,没有404.如果我转到admin/blah
或只是blabla
我会收到404,所以我知道<发生了什么,它只是没有正确发生。我错过了什么吗?
答案 0 :(得分:3)
我误解了控制器的命名约定。
这就是 :
的方式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'));