ZF2 控制台路由和 ACL
ZF2 console route and 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
您的 ACL 资源 cronroute/getcities
是错误的,因为它(通常)会检查路由 getcities
作为来自 cronroute
.
的子级
所以解决方案是在 module.acl.roles.php
中摆脱 cronroute 后面的 /getcities
,一切都应该没问题。
我的应用程序存在以下问题。
我使用了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
您的 ACL 资源 cronroute/getcities
是错误的,因为它(通常)会检查路由 getcities
作为来自 cronroute
.
所以解决方案是在 module.acl.roles.php
中摆脱 cronroute 后面的 /getcities
,一切都应该没问题。