duanhan5230 2015-07-09 21:51
浏览 125
已采纳

ZF2控制台路由和ACL

I've the follow problem with my application.

I make use of ACL, all works fine. I need to setup a Console module for some scraping. I've created te module with controller and route but when I run the command in my console I get an permission error from ACL.

My 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'
                        ),
                    ),
                ),

            ),
        ),
    ),
);

My controller;

<?php

namespace Cron\Controller;

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

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

And part of my module.acl.roles.php

<?php

return array(

    # Guest
    'guest' => array(

        # Homepage
        'home',

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

Than the result in the console by the command;

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条回答

  • duanditang2916 2015-07-10 07:01
    关注

    Your ACL resource cronroute/getcities is wrong because it (normally) would check for route getcities as child from cronroute.

    So the solution is to get rid of /getcities behind cronroute in module.acl.roles.php and everything should be fine.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考