Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF2路由无法正常工作_Php_Zend Framework2 - Fatal编程技术网

Php ZF2路由无法正常工作

Php ZF2路由无法正常工作,php,zend-framework2,Php,Zend Framework2,我有一个基于提供的框架的ZF2项目。我使用ZFTool制作了一些控制器和操作。问题是路由器不接受URL。它说:路由无法匹配请求的URL 注意事项: 该项目位于Apache虚拟主机上 将创建控制器: $ zf.php create controller user Application The controller user has been created in module Application. $zf.php create action register user Applicat

我有一个基于提供的框架的ZF2项目。我使用
ZFTool
制作了一些控制器和操作。问题是路由器不接受URL。它说:
路由无法匹配请求的URL

注意事项:

  • 该项目位于Apache虚拟主机上

  • 将创建控制器:

    $ zf.php  create controller user Application
    The controller user has been created in module Application.
    
    $zf.php  create action register user Application
    Creating action 'register' in controller 'Application\Controller\user'.
    Created view script at ./module/Application/view/application/user/register.phtml
    The action register has been created in controller Application\Controller\user.
    
  • 路由器的配置如下:

    // ...
    'router' => array(
        'routes' => array(
            'home' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Application\Controller\Index',
                        'action'     => 'index',
                    ),
                ),
            ),
            // The following is a route to simplify getting started creating
            // new controllers and actions without needing to create a new
            // module. Simply drop new controllers in, and you can access them
            // using the path /application/:controller/:action
            'application' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/application',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Application\Controller',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:controller[/:action]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),  
    

  • 分段的
    controller/action
    路由在
    application
    下注册为子路由,这意味着您必须在前面键入application:
    www.mysite.local.com/application/user/register

    如果您不想这样做,您必须更改路由定义。

    您尝试访问哪个uri?@BramGerritsen
    www.mysite.local.com/user/register
    。该条目已添加到
    /etc/hosts
    ,并且
    www.mysite.local.com/
    起作用。
    /application/user/register
    不起作用,但错误消息已更改:
    请求的控制器无法映射到现有的控制器类application\controller\user(解析为无效的控制器类或别名:Application\controller\User
    。有趣的事实:
    /Application
    /Application/index
    工作正常。您需要使用module.config.php中的controllers.invokables键或使用getControllerConfig()在controller manager.r中注册控制器。)方法。phpYes您可以去掉它。只需阅读并使用路由器配置。我更喜欢只定义我的所有路由,而不使用magic
    :controller/:action
    路由。您可以演示一个示例吗?我很高兴手动添加控制器,尽管找不到如何删除magic。(尝试了一百万种组合)您还需要定义控制器类所在的命名空间,请参阅我更新的要点。