php - classes/controllers/<subfolder>/<subfolder> 中的 Kohana 3.2 Controller

标签 php routing kohana-3 kohana-3.2

我已经看到很多与这个问题非常相似的问题(例如 this onethis ),但我的问题是我的 Controller 位于 controllers 文件夹。我的目录结构如下所示:

classes/
    controllers/
        admin/
            manageMemberProfile/
                memberList.php
                memberProfileInfo.php
                editMemberProfile.php
            manageCompanyProfile/
                ........
        member/
            ........

        guest/
            ........

    models/
        ........

请注意,我已经在我提供的链接中完成了解决方案(并设法使其工作),但它仅适用于 controllers 文件夹内的文件夹中的 Controller 。我想要的是用这种目录设置来调用我的 Controller 。我对 kohana 3.2 中的路由很陌生,所以我真的不知道如何解决这个问题,我也阅读了他们关于路由的文档,但我仍然无法解决我的这个问题。

最佳答案

链接中所述的答案也适用于此处。您只需要添加子目录,例如像这样

Route::set('admin_manageMembersProfile', 'admin/manageMembersProfile(/<controller>)')
    ->defaults(array(
        'directory' => 'admin/manageMembersProfile',
        'controller' => 'defaultController',
        'action' => 'defaultAction',
    ));

当然,对每个子目录都这样做会很有压力。所以你可以使用 Lambda/Callback route logic :

Route::set('admin', function($uri) {
    $directories = array('manageMembersProfile', 'manageOthers');
    if (preg_match('#^admin/('.implode('|', $directories).')(/[^/]+)*#i', $uri, $match)) {
        $subdirectory = $match[1];
        if (array_key_exists(2, $match)) {
            $controller = trim($match[2], '/');
        } else {
            $controller = 'defaultController';
        }
        if (array_key_exists(3, $match)) {
            $action = trim($match[3], '/');
        } else {
            $action = 'defaultAction';
        }
        return array(
            'directory' => 'admin/'.$subdirectory,
            'controller' => $controller,
            'action' => $action,
        );
    }
});

这只是一个非常基本的示例,但我希望它能向您展示如何以这种方式处理路由。

关于php - classes/controllers/<subfolder>/<subfolder> 中的 Kohana 3.2 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096782/

相关文章:

php - 转换 iPhone 时间戳

php - Laravel: Blade View 中的 undefined variable

scala - 喷涂路线: How to respond with different content-types?

codeigniter - Nginx & PHP5-fpm + CodeIgniter 或 Kohana = 404 错误?

php - 第 2 页上的 Laravel 自定义分页作为对象返回

PHP/CSS/HTML 网络导航在 Chrome 中充当图像

Angular 5 查询参数消失

amazon-web-services - AWS Load Balancer 将流量路由到具有多个微服务的一个目标组

Kohana 3.1 中的模板

image-manipulation - Kohana [ fatal error ] : Class 'Image' not found