将文档创建为另一个文档子文件时,会使用默认控制器,操作和模板设置创建文档。
我想设置它,以便控制器,操作和模板文件将从父子结构中的相邻文档中获取值。
这个问题是否有开箱即用的解决方案,或者有人以其他方式做过这个?
答案 0 :(得分:2)
“开箱即用”只能使用控制器,操作,模板值创建命名(预定义)文档类型。这些类型可在文档树中的“添加文档”上下文菜单中找到。
但我看到两种可能的解决方案:
您可以定义自定义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>
创建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;
}