子文件夹中的Kohana 3.3控制器

时间:2013-11-08 09:48:36

标签: php routing kohana

我有控制器

--controllers
  --Administrator
    -Base.php
    -Admin.php (extend Base.php)
-controller1.php
-controller2.php
-etc

我的路线看起来像这样

    Route::set('administrator', 'Administrator(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'directory' => 'Administrator',
    'controller' => 'base',
    'action'     => 'index',
));

尝试加载此控制器,我收到消息Not found

怎么了?

UPDATE!

class Controller_Administrator_Base extends Controller_Template {

    public $template = 'panel/index';

    public function action_index(){
        echo 'kupakonia';
    }
} // End Welcome

所有路线。我正在尝试从谷歌的很多sugesstions并没有任何帮助,我写了一些因为我不能更新这个tobic因为里面的代码太多了。

仍然无法更新。

Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'read',
    'action'     => 'index',
));
Route::set('user', '(<controller>(/<action>(/<id>)))')
->defaults(array(
    'controller' => 'user',
    'action'     => 'index',
));

Route::set('administrator', 'administrator(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'directory' => 'Administrator',
    'controller' => 'base',
    'action'     => 'index',
));

任何sugestions?

聚苯乙烯。仍然无法更新此主题:/ Wtf必须是tekst中的字符多于代码中的字符吗? 这是我在stackoverflow上的第一个asc。很抱歉这个;)

1 个答案:

答案 0 :(得分:3)

您有两个捕获Bootstrap文件中的所有路由(defaultuser)。这两条路线完全相同。

此外,由于这些路由是全部捕获并且路由的顺序很重要,这意味着如果catch所有路由是第一个匹配所有URL。

试试这个:

Route::set('administrator', 'administrator(/<controller>(/<action>(/<id>)))')
->defaults(array(
    'directory' => 'Administrator',
    'controller' => 'base',
    'action'     => 'index',
));

Route::set('default', '(<controller>(/<action>(/<id>)))')
 ->defaults(array(
    'controller' => 'read',
    'action'     => 'index',
));

另一方面,捕捉所有路线通常是不好的做法。尝试创建特定于Controllers的路由。