ドキュメントを別のドキュメントの子として作成すると、デフォルトのコントローラー、アクション、およびテンプレート設定で作成されます。
コントローラー、アクション、およびテンプレートの各フィールドが、親子構造で隣接するドキュメントから値を取得するように設定したいと考えています。
この問題に対するすぐに使える解決策はありますか、それとも誰かが他の方法でこれを行ったのでしょうか?
ドキュメントを別のドキュメントの子として作成すると、デフォルトのコントローラー、アクション、およびテンプレート設定で作成されます。
コントローラー、アクション、およびテンプレートの各フィールドが、親子構造で隣接するドキュメントから値を取得するように設定したいと考えています。
この問題に対するすぐに使える解決策はありますか、それとも誰かが他の方法でこれを行ったのでしょうか?
「すぐに」使用できるのは、コントローラー、アクション、テンプレートの値を持つ名前付き (定義済み) のドキュメント タイプのみです。これらのタイプは、ドキュメント ツリーの [ドキュメントの追加] コンテキスト メニューで使用できます。
しかし、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>
プラグインを作成し、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;
}