0

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

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

这个问题是否有开箱即用的解决方案,或者也许有人以其他方式做到了这一点?

4

1 回答 1

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. 创建一个插件并定义postAddDocument(Document $document)钩子

    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;
    }
    
于 2013-03-15T01:32:04.370 回答