【问题标题】:Magento: Adminhtml controllers in frontend?Magento:前端的 Adminhtml 控制器?
【发布时间】:2015-02-05 04:09:24
【问题描述】:

我正在尝试编写一个模块,允许用户在我们的系统中创建自己的商店(多商店功能)。

我想知道,是否可以在 Magento 前端执行 adminhtml 控制器的功能?

此时,我刚刚在 Magento 后端单击保存网站时创建文件夹并编辑 index.php, .htaccess。我需要更多,请帮助。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: php magento automation


    【解决方案1】:

    我认为这不是一个好主意 - 被允许创建自己的商店的人应该获得一个管理员帐户(您知道您可以定义具有受限权限的角色吗?)

    但要回答这个问题:这是可能的。您必须创建一个自己的前端控制器来模拟登录的管理员用户,然后转发到 adminhtml 控制器操作。

    示例(未经测试):

    public function saveStoreAction()
    {
        $adminUser = Mage::getModel('admin/user')->load(ADMIN_USER_ID);
        $adminSession = Mage::getSingleton('admin/session');
        $adminSession->setUser($adminUser);
        $adminSession->setIsFirstPageAfterLogin(false);
    
        $this->_forward('save', 'store', 'adminhtml');
    }
    

    ADMIN_USER_ID 是您要执行操作的后端用户的 ID。这不应该是您自己的拥有完全权限的管理员帐户,而是只有必要权限的虚拟帐户或真实帐户,每个用户都不同。

    关于_forward():

    该方法在Mage_Core_Controller_Varien_Action 中定义并记录如下:

    /**
     * Throw control to different action (control and module if was specified).
     *
     * @param string $action
     * @param string|null $controller
     * @param string|null $module
     * @param array|null $params
     */
    

    它操作当前请求对象并将其设置为“未调度”,以便前端控制器将再次尝试找到合适的动作控制器将其调度到,这次根据新参数。

    实际上我的第一个版本有一个错误,_forward 没有像'adminhtml/store/save' 这样的路由作为参数,而是以相反顺序的单独部分,'save', 'store', 'adminhtml'

    【讨论】:

    • 感谢您的帮助 fschmengler,您能否描述或参考一下 _forward() 的工作原理?好吧,我的工作流程将如下所示:user register @ frontend > create role > create user > assign to role > create website,group,store > success
    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多