gpt4 book ai didi

php - Zend framework 2 模块名称路由问题

转载 作者:可可西里 更新时间:2023-10-31 22:50:50 24 4
gpt4 key购买 nike

我的模块路由有问题。我有 2 个模块,应用程序和管理。每个模块都有 indexAction 作为默认操作:

localhost/--> 应用程序/索引

localhost/admin/-> 管理/索引

admin/index 仅适用于 localhost/admin/index/

当模块名称以字母“A”开头时会发生此问题。如果我将 Admin 重命名为“Cars”,localhost/cars/可以正常工作!

错误是:

A 404 error occurred
The requested controller was unable to dispatch the request.
Controller:
Application\Controller\Application
No Exception available

这是应用程序模块中的 module.config.php:

<?php
return array(
'router' => array(
'routes' => array(
'Application' => array(
'type' => 'Segment',
'options' => array(
'route' => '[/][:action/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'controller' => 'Application\Controller\Application',
'action' => 'index',
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'Application\Controller\Application' => 'Application\Controller\IndexController'
),
),

'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'Application/Application/index' => __DIR__ . '/../view/Application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
'template_path_stack' => array(
'Application' => __DIR__ . '/../view',
),
),
);
?>

这是 Admin 模块中的 module.config.php:

    <?php
return array(
'router' => array(
'routes' => array(
'Admin' => array(
'type' => 'Segment',
'options' => array(
'route' => '/admin/[:action/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*'
),
'defaults' => array(
'controller' => 'Admin\Controller\AdminController',
'action' => 'index'
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'Admin\Controller\AdminController' => 'Admin\Controller\AdminController'
),
),
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'template_path_stack' => array(
'Admin' => __DIR__ . '/../view',
),
),
);
?>

IndexController.php

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{

public function indexAction(){

}
}

AdminController.php

namespace Admin\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class AdminController extends AbstractActionController
{

public function indexAction()
{}
}

谁能帮帮我?

最佳答案

首先是您的错误请求的 Controller 无法分派(dispatch)请求。 仅当路由器无法将请求分派(dispatch)到其定义的操作时才会发生。因此,请验证您的 Controller 是否正确以及操作是否存在且可调用。

正如已经指出的那样,您的 /admin/ 路由将指向两个已配置的端点。当管理路由在配置中的应用程序路由之前定义时,这首先不是问题。

所以你的路由 /admin/ 路由永远不会被路由到你的 AdminController 因为另一个动态路由会首先被匹配。

为了获得预期的结果,请在您的路由中使用 priority 设置,以确保您的 Admin 路由在您的 Application 路由之前匹配.

'router' => array(
'routes' => array(
'Admin' => array(
'priority' => 100,
'type' => 'Segment',
'options' => array(
'route' => '/admin/[:action/]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*'
),
'defaults' => array(
'controller' => 'Admin\Controller\AdminController',
'action' => 'index'
),
),
),
),
),

除了你的问题,不要以 ?> 结束 php 脚本,因为当结束标记后有空格时,这可能会导致错误。

关于php - Zend framework 2 模块名称路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33739198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com