【问题标题】:Inheritable (?) controller, action and template可继承 (?) 控制器、动作和模板
【发布时间】:2012-11-30 00:07:47
【问题描述】:

当创建一个文档作为另一个子文档时,它是使用默认控制器、操作和模板设置创建的。

我想设置它,以便控制器、动作和模板文件可以从父子结构中的相邻文档中获取值。

这个问题是否有开箱即用的解决方案,或者可能有人以其他方式解决了这个问题?

【问题讨论】:

  • 所以您希望所有具有相同父级的文档共享一些值?您如何处理应用程序的路由部分?层次结构是否反映在 URL 中?你想分享什么样的“价值观”?
  • 是的,路由目前完全基于层次结构。什么样的价值观?正如我所提到的 - 控制器、操作和模板下拉菜单值

标签: zend-framework pimcore


【解决方案1】:

“开箱即用”只能创建具有控制器、操作、模板值的命名(预定义)文档类型。这些类型在文档树中的“添加文档”上下文菜单中可用。

但我看到了两种可能的解决方案:

  1. 您可以定义自定义Document_Page 类和重载create() 方法。

    public static function create($parentId, $data = array())
    {
        $document = static::create($parentId, $data = array());
    
        $parent = Document::getById($parentId);
        $document->setModule($parent->getModule());
        $document->setController($parent->getController());
        $document->setAction($parent->getAction());
        $document->setTemplate($parent->getTemplate());
        $document->save();
    
        return $document;
    }
    

    那么你必须在classmap.xml中声明你的自定义类:

    <Document_Page>Website_Document_Page</Document_Page>
    
  2. 创建plugin 并定义postAddDocument(Document $document) hook

    public static function postAddDocument(Document $document)
    {
        $parent = $document->getParent();
        $document->setModule($parent->getModule());
        $document->setController($parent->getController());
        $document->setAction($parent->getAction());
        $document->setTemplate($parent->getTemplate());
        $document->save();
    
        return $document;
    }
    

【讨论】:

  • 感谢您的回答!我希望有些人会发现它很有用,因为我已经停止使用 Pimcore,并希望我永远不必再这样做了 :) 我认为第二种解决方案在逻辑上是最正确的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多