可继承(?)控制器,操作和模板

时间:2012-12-12 10:00:37

标签: zend-framework pimcore

将文档创建为另一个文档子文件时,会使用默认控制器,操作和模板设置创建文档。

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

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

1 个答案:

答案 0 :(得分:2)

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

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

  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;
    }