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