所以我正在尝试使用子目录构建路由并遵循Kerkness wiki指南,但不断出现错误。如果有人能指出我做错了什么,我会非常感激。
http://kerkness.ca/wiki/doku.php?id=routing:building_routes_with_subdirectories
代码:
Route::set('default', '(<directory>(/<controller>(/<action>(/<id>))))', array('directory' => '.+?'))
->defaults(array(
'directory' => 'admin',
'controller' => 'main',
'action' => 'index',
));
网址:
/admin/weather/feedback
文件:
/application/classes/controller/admin/weather/feedback.php
class Controller_Admin_Weather extends Controller_Admin_Base {
错误:
ReflectionException [ -1 ]: Class controller_admin_weather does not exist
答案 0 :(得分:3)
天气需要是控制者而不是反馈。在admin文件夹中创建一个weather.php,然后将控制器作为Controller_Admin_Weather,然后将操作设置为action_feedback。
答案 1 :(得分:3)
正如@mikelbring所说,您的控制器类名称错误。该文件中的一个类应该被称为Controller_Admin_Weather_Feedback
您的路线中是否真的需要这么多可选段? 也;如果网址没有可变元素,你可以坚持使用这样的默认值:
Route::set('my_route_name', 'admin/weather/feedback')
->defaults(array(
'directory' => 'admin/weather',
'controller' => 'feedback',
'action' => 'index',
));
如果您的班级位于/application/classes/controller/admin/weather.php
并且使用action_feedback(...)
方法,则可以使用以下路线
Route::set('my_route_name', 'admin/weather/feedback')
->defaults(array(
'directory' => 'admin',
'controller' => 'weather',
'action' => 'feedback',
));