Kohana 3:路由与子目录错误,控制器不存在

时间:2010-10-07 17:35:31

标签: php routing kohana

所以我正在尝试使用子目录构建路由并遵循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

2 个答案:

答案 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',
    ));