2

我尝试按照应用程序/索引正在工作的Akrabats 教程,但专辑部分没有。

我也用ZendSkeletonModule尝试过,但没有成功。

这两种情况的错误是:

album/album (resolves to invalid controller class or alias: album/album)

我用 ZF2 master 和 beta4 标签尝试了它(但 beta4 标签给出了关于缺少方法 getEventManager 的 php 错误)

我从 Akrabats Tutorial 中获取了代码,之后使用了GitHub Repo中的代码失败。不幸的是,没有一些论坛或评论部分可以寻求帮助。

我在教程和 module.config.php 中的骨架(zfcUser 具有相同的差异)中发现了一些差异(我相信这是问题的核心)。

本教程classes在控制器索引、zfcUser 和 Skeleton 中使用invokables,但这似乎并不重要,因为错误不会改变。

我的 module.config 目前看起来像这样:

<?php

return array(

    // Controllers in this module
    'controller' => array(
        'invokables' => array(
            'album/album' => 'Album\Controller\AlbumController',
        ),        
    ),


    // Routes for this module
    'router' => array(
        'routes' => array(
            'album' => array(
                'type' => 'Literal',
                'priority' => 1000,
                'options' => array(
                    'route' => '/album',
                    'defaults' => array(
                        'controller' => 'album/album',
                        'action' => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array( 
                    'misc' => array (
                        'type'    => 'segment',
                        'options' => array(
                            'route'    => '/album/[:action][/:id]',
                            'constraints' => array(
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'id'     => '[0-9]+',
                            ),
                            'defaults' => array(
                                'controller' => 'album/album',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),    

    // View setup for this module
    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);

专辑\控制器\专辑控制器:

<?php

namespace Album\Controller;

use Zend\Mvc\Controller\ActionController,
    Zend\View\Model\ViewModel,
    Album\Model\AlbumTable,
    Album\Model\Album,
    Album\Form\AlbumForm;

class AlbumController extends ActionController
{
// [....]
}

我不知道在哪里可以解决这个错误,你们中有人有想法吗?

如果没有另外提及,代码就像 github 上的原始代码(参见上面的链接)。

TIA

4

4 回答 4

7

这里的区别不仅在于可调用对象,还在于数组键现在是复数形式的“controller s ”,这对我来说起到了作用。在您的代码中“invokables”已经更改,但您似乎使用“控制器”作为键。

    'controllers' => array(
            'invokables' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),
于 2012-07-07T15:36:36.427 回答
4

显然控制器的数组发生了变化。现在 classes 键更改为 invokables:在 module.config.php

    'controller' => array(
            'classes' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),

必须改为

    'controllers' => array(
            'invokables' => array(
                    'album/album' => 'Album\Controller\AlbumController',
            ),
    ),
于 2012-07-06T10:34:55.980 回答
3

找到它,它 ActionController 类似乎在 ZF2-beta4 上消失了,所以你的 AlbumController 需要这样:

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

class AlbumController extends AbstractActionController {
   .....
}
于 2012-07-05T19:44:49.973 回答
0

你必须正确 config/application.config.php

<?php
return array(
    'modules' => array(
        'Application',
        'Album',
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);
于 2012-10-15T19:57:07.757 回答