ZF2控制台路由和ACL

时间:2015-07-09 21:51:08

标签: php zend-framework2 console acl

我的应用程序存在以下问题。

我使用ACL,一切正常。我需要设置一个控制台模块进行一些抓取。我已经用控制器和路由创建了te模块但是当我在控制台中运行命令时,我从ACL中获得了一个权限错误。

我的module.config.php;

return array(
    'router' => array(
        'routes' => array(
        ),
    ),
    'controllers' => array(
        'invokables' => array(
            'Cron\Controller\City'  => 'Application\Controller\CityController',
        ),
    ),
    // Placeholder for console routes
    'console' => array(
        'router' => array(
            'routes' => array(

                'cronroute' => array(
                'options' => array(
                        'route'    => 'getcities',
                        'defaults' => array(
                            'controller' => 'Cron\Controller\City',
                            'action' => 'get'
                        ),
                    ),
                ),

            ),
        ),
    ),
);

我的控制器;

<?php

namespace Cron\Controller;

use Zend\Mvc\Controller\AbstractActionController;
class CityController extends AbstractActionController
{

    public function getAction()
    {
        echo 'Get cities';
    }
}

我的module.acl.roles.php的一部分

<?php

return array(

    # Guest
    'guest' => array(

        # Homepage
        'home',

        # Console routes
        'cronroute/getcities', // tried this one
        'getcities', // and this one
    ),

比命令控制台中的结果;

php public_html/index.php getcities



Fatal error: Uncaught exception 'Zend\Permissions\Acl\Exception\InvalidArgumentException' with message 'Resource 'cronroute' not found' in /home/..../domains/..../vendor/zendframework/zendframework/library/Zend/Permissions/Acl/Acl.php:292

1 个答案:

答案 0 :(得分:1)

您的ACL资源cronroute/getcities错误,因为它(通常)会检查来自getcities的路由cronroute作为子资源。

所以解决办法就是在/getcities中摆脱cronroute背后的module.acl.roles.php,一切都应该没问题。