3

一部のコントローラーのルートを zend フレームワーク 2 に配置しようとはほとんどしていませんが、たくさん読んだ後でも、要求されたコントローラーを既存のコントローラー クラスにマップできませんでした。CRMという名前のモジュールがあり、srcフォルダーには連絡先と会社があり、それぞれにコントローラー/フォーム/モデルがあります。これは私のmodule.configファイルです:

     array(
         'controllers' => array(
         'invokables' => array(
              'CRM\Controller\Contacts' => 'CRM\Controller\ContactsController',
          'CRM\Controller\Companies' => 'CRM\Controller\CompaniesController',
    ),
),


'router' => array(
    'routes' => array(
        'contacts' => array(
            'type'    => 'Segment',
            'options' => array(
                'route'    => '/contacts[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Contacts\Controller\Contacts',
                    'action'     => 'index',
                ),
            ),
        ),

        'companies' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/companies[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Companies\Controller\Companies',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),



'view_manager' => array(
    'template_path_stack' => array(
        'contacts' => __DIR__ . '/../view/crm',
        'companies' => __DIR__ . '/../view/crm',
    ),
),

);

どんな助けでも本当に感謝しています。

4

2 に答える 2

2

質問と構造を正しく理解している場合は、オートローダー構成で名前空間を設定する必要があります...

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                // CRM
                __NAMESPACE__  => __DIR__ . '/src/' . __NAMESPACE__,
                // Contacts
                'Contacts' => __DIR__ . '/src/Contacts',
                // Companies
                'Companies' => __DIR__ . '/src/Companies',
            ),
        ),
    );
}
于 2013-02-11T13:14:19.460 に答える
2

構成の上部に、Controller invokables 構成があります。

'CRM\Controller\Contacts' => 'CRM\Controller\ContactsController',

上記の最初の値は識別子です。これは、ルート定義内で使用するためのものです。たとえば、あなたのcontactsルート - 以下を変更してみてください:

'defaults' => array(
     'controller' => 'CRM\Controller\Contacts',
     'action'     => 'index',
),
于 2013-02-11T01:02:59.520 に答える