質問: jformサブフォームフィールドでカスタムレイアウトを使用する方法 一部のフォームをコンポーネントで再利用したい。サブフォームフィールドがその役割を果たします。ただし、サブフォームを表示するときに、いくつかのフィールドやフィールドグループを削除する必要があります。jformメソッドremovegroup()およびremovefield()を使用しようとしましたが、サブフォームから削除されません。新しいレイアウトが進むべき道だと思います。 layout='joomla.form.field.subform.default'の代わりに、フィールドでレイアウトを指定できます。 この作業をしますか?もしそうなら、どうすればカスタムレイアウトを実装できますか? 例をいただければ幸いです。
回答: サブフォーム(joomla!3.6以降)を別の「マスター」フォーム内に配置し、カスタムレイアウトを使用するには:1)マスターjform xmlファイルでは、サブフォームフィールドタイプを使用します。<field name= "fieldname" description= "field name description" type= "subform" label= "field label" required= "true" formsource= "/administrator/components/com_mycomponent/models/forms/myform.xml" layout="myfolder.mylayoutfile" /> formsourceは、レンダリングされるjform xmlサブフォームへのパスです。layoutは、カスタムレイアウトファイルへのドット表記パスです。コンポーネントのディレクトリ構造に「レイアウト」フォルダが必要です。したがって、com_mycomponent/layoutsになります。レイアウトフォルダーの下に、他のフォルダーを作成できます(必要な場合)。上記の例では、「myfolder」は「layouts」の下のフォルダーであり、「mylayoutfile」はそのフォルダー内のカスタムphpレイアウトファイルです。ドット表記では「layouts」を指定しないでくださいパスとファイル名に.phpを追加しないでください。2)これはレイアウトの例ですphpファイルは目的に合わせて変更できます。<?php defined('_jexec') or die; extract($displaydata); $form = $forms[0]; ?> <div class="subform-wrapper"> <?php foreach($form->getgroup('') as $field): ?> <?php echo $field->renderfield(); ?> <?php endforeach; ?> </div>