使用前缀路由时,URL中的CakePHP3.x控制器名称

Hitochan

我正在尝试在CakePHP3中使用前缀路由。我在/config/routes.php中添加了以下几行。

Router::prefix("admin", function($routes) {
    // All routes here will be prefixed with ‘/admin‘
    // And have the prefix => admin route element added.
    $routes->connect("/",["controller"=>"Tops","action"=>"index"]);
    $routes->connect("/:controller", ["action" => "index"]);
    $routes->connect("/:controller/:action/*");
});

之后,我创建了/src/Controller/Admin/QuestionsController.php,如下所示。

<?php
     namespace App\Controller\Admin;
     use App\Controller\AppController;

     class QuestionsController extends AppController {
        public function index() {
        //some code here
        }
     }
?>

最终,我尝试访问localhost/app_name/admin/questions/index,但出现错误消息,Error: questionsController could not be found但是,当我将控制器名称的首字母大写时(即localhost / app_name / admin / Questions / index),它可以正常工作。我认为这很奇怪,因为没有前缀,我可以使用第一个字符不大写的控制器名称。这是某种错误吗?

ndm

在Cake 3.x中,默认情况下路由不会再发生变化,而是您必须显式地使用InflectedRouteroute类,例如在默认routes.php应用程序配置中看到的bee即可

Router::scope('/', function($routes) {
    // ...

    /**
     * Connect a route for the index action of any controller.
     * And a more general catch all route for any action.
     *
     * The `fallbacks` method is a shortcut for
     *    `$routes->connect('/:controller', ['action' => 'index'], ['routeClass' => 'InflectedRoute']);`
     *    `$routes->connect('/:controller/:action/*', [], ['routeClass' => 'InflectedRoute']);`
     *
     * You can remove these routes once you've connected the
     * routes you want in your application.
     */
    $routes->fallbacks();
});

您的自定义路由未指定特定的路由类别,因此将使用默认Route类别,而后备路由会使用变形的路由,这就是为什么它不带前缀的原因。

因此,请在您的URL中使用大写的控制器名称,或使用类似的路由类InflectedRoute将它们正确转换:

Router::prefix('admin', function($routes) {
    // All routes here will be prefixed with ‘/admin‘
    // And have the prefix => admin route element added.
    $routes->connect(
        '/',
        ['controller' => 'Tops', 'action' => 'index']
    );
    $routes->connect(
        '/:controller',
        ['action' => 'index'],
        ['routeClass' => 'InflectedRoute']
    );
    $routes->connect(
        '/:controller/:action/*',
        [],
        ['routeClass' => 'InflectedRoute']
    );
});

另请参见http://book.cakephp.org/3.0/en/development/routing.html#route-elements

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用前缀路由时,URL中的CakePHP3.x控制器名称

来自分类Dev

Cakephp-在其他控制器中工作时,从URL获取控制器名称和操作

来自分类Dev

使用路由关闭中的控制器名称空间

来自分类Dev

cakephp,如何更改控制器的URL名称

来自分类Dev

控制器中的cakephp 3 url

来自分类Dev

Rails路由没有控制器名称的短URL

来自分类Dev

Rails路由没有控制器名称的短URL

来自分类Dev

铁路由器:获取当前控制器的名称

来自分类Dev

如何在CakePHP 3.x中为子控制器配置路由?

来自分类Dev

在Rails中前缀路由控制器

来自分类Dev

使用路由出于seo目的在URL中隐藏或删除控制器名称= codeigniter

来自分类Dev

如何从codeigniter中的URL中删除控制器名称?

来自分类Dev

如何从codeigniter中的URL中删除控制器名称?

来自分类Dev

如何在Grails中更改控制器名称URL?

来自分类Dev

WebApi中控制器名称的连字符URL

来自分类Dev

如何从Codeigniter中的URL删除/隐藏控制器名称

来自分类Dev

codeigniter 从 url 替换 2 个或多个控制器的控制器名称

来自分类Dev

检查嵌套控制器中的父控制器名称

来自分类Dev

从控制器的类中获取MVC控制器名称

来自分类Dev

从控制器的类中获取MVC控制器名称

来自分类Dev

Rails路由,不支持的控制器名称错误

来自分类Dev

从控制器或组件访问当前路由名称

来自分类Dev

Rails路由,不是受支持的控制器名称错误

来自分类Dev

在Kohana中路由而不显示控制器名称

来自分类Dev

cakephp 2.x在javascript中执行控制器

来自分类Dev

从url -zend框架2获取控制器名称

来自分类Dev

URL两次显示MVC控制器名称

来自分类Dev

控制器名称随机添加到 URL

来自分类Dev

调用其方法时隐藏控制器名称

Related 相关文章

热门标签

归档