【问题标题】:Cannot call plugin Controllers in Cakephp无法在 Cakephp 中调用插件控制器
【发布时间】:2017-11-16 05:43:53
【问题描述】:

我有一个名为 PanelAdmin 的插件。它有控制器UsersController.php,里面定义了不同的动作。 我已经通过这段代码调用了插件中的默认控制器

$routes->connect('/PanelAdmin', ['plugin' => 'PanelAdmin','controller' => 'default','action' => 'index']);

但是如果我点击这个 url 就不能调用其他控制器:

http://localhost/multi_shopping/PanelAdmin/Users/

我还想澄清一件事,我必须在 routes.php 中为所有控制器操作定义路由。请解决我的问题。谢谢

【问题讨论】:

    标签: php cakephp cakephp-3.0


    【解决方案1】:

    在你的插件routes.php 中确保你设置了一个后备路由。

    routes.php

    <?php
    use Cake\Routing\Route\DashedRoute;
    use Cake\Routing\RouteBuilder;
    use Cake\Routing\Router;
    
    Router::plugin(
        'PanelAdmin',
        ['path' => '/PanelAdmin'],
        function (RouteBuilder $routes) {
            $routes->fallbacks(DashedRoute::class);
        }
    );
    

    来自 DashedRoute 类:

    /**
     * This route class will transparently inflect the controller, action and plugin
     * routing parameters, so that requesting `/my-plugin/my-controller/my-action`
     * is parsed as `['plugin' => 'MyPlugin', 'controller' => 'MyController', 'action' => 'myAction']`
     */
    

    【讨论】:

    • 感谢 Mathew-我需要为所有控制器操作或仅为基本控制器定义路由。
    • @user3653474 DashedRoute 处理程序将自动将控制器名称路由到 /PanelAdmin/controller/action 路由的控制器函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    相关资源
    最近更新 更多