我的应用程序存在以下问题。
我使用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
答案 0 :(得分:1)
您的ACL资源cronroute/getcities
错误,因为它(通常)会检查来自getcities
的路由cronroute
作为子资源。
所以解决办法就是在/getcities
中摆脱cronroute背后的module.acl.roles.php
,一切都应该没问题。