【问题标题】:ZF2 - ZfcAdmin - overriding controllerZF2 - ZfcAdmin - 覆盖控制器
【发布时间】:2017-06-21 10:07:05
【问题描述】:

我正在为 ZF2 (https://github.com/ZF-Commons/ZfcAdmin/) 使用 ZfcAdmin 模块,但我无法使用自己的控制器。

根据模块文档 (https://github.com/ZF-Commons/ZfcAdmin/blob/master/docs/2.Routes.md),我应该能够在我的新模块路由配置中简单地从文档中添加这个 sn-p 后使用我自己的控制器,但是它只会导致重定向到主页,因为它没有找不到路线。所以我添加了这部分:

'controllers' => array(
    'invokables' => array(
      'Admin\Controller\Admin' => 'Admin\Controller\AdminController',
    ),
),

这会导致错误:

异常:Zend\Mvc\Controller\ControllerManager::createFromInvokable:通过可调用类“Admin\Controller\AdminController”检索“admincontrolleradmin(别名:Admin/Controller/Admin)”失败;类在 /var/www/app/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php:240 中不存在

Module.php

<?php
namespace Admin;

class Module
{
  public function getConfig()
  {
    return include __DIR__ . '/config/module.config.php';
  }

  public function getAutoloaderConfig()
  {
    return array(
      'Zend\Loader\StandardAutoloader' => array(
        'namespaces' => array(
          __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
        ),
      )
    );
  }
}

module.config.php

<?php
return array(
  'controllers' => array(
    'invokables' => array(
      'Admin\Controller\Admin' => 'Admin\Controller\AdminController',
    ),
  ),


  'router' => array(
    'routes' => array(
      'zfcadmin' => array(
        'options' => array(
          'defaults' => array(
            'controller' => 'Admin/Controller/Admin',
            'action'     => 'test',
          ),
        ),
      ),
    ),
  ),
);

模块/Admin/src/Admin/AdminController.php

<?php

namespace Admin\Controller;

use Zend\Mvc\Controller\AbstractActionController;

class AdminController extends AbstractActionController
{
  public function testAction()
  {
    echo('test');
    die();
  }
}

我 99% 确定这是我的错,而不是 zfcadmin 本身。尽管如此,我不知道在创建自己的控制器时我在哪里犯了错误,但找不到。

【问题讨论】:

    标签: php zend-framework2


    【解决方案1】:

    Zend 2 找不到你的“AdminController.php”。

    您最好的选择是将“AdminController.php”更改为“module/Admin/src/Controller/”下,而不是“module/Admin/src/Admin/”。

    【讨论】:

    • 我已经试过了,在某些时候我什至在两个位置都制作了两个控制器文件,仍然没有运气
    • 抱歉,最后忘记了“Controller”目录。
    • 同上。虽然它现在可以工作,但在路径 Admin/src/Admin/Controller/AdminController.php 下。我不知道是什么问题,我用 zftools 生成了控制器并重新安装了模块,但是我看不到文件有什么不同。还是谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多