_com_image
_という名前の最初のカスタムコンポーネントを開発しようとしています。プロジェクト要件の構造と機能のため、_com_contact
_フォルダーのクローンを作成し、必要なdbテーブル/行を複製するのが最善の方法です。コンポーネントから不要な構造をたくさんコメントアウトしましたが、ここで何かを追加する必要があります。
_administrator/index.php?option=com_image&view=image&layout=edit&id=1
_の[画像の編集](最初)タブにblue/info note を生成するにはどうすればよいですか?
私のプロジェクトでは、最初のタブのプライマリパネルには実際にはフィールドがありません。ノートフィールドはlocation
の値を保持するだけで十分です。
_<div class="row-fluid">
<div class="span9">
<div class="row-fluid form-horizontal-desktop float-cols" >
<div class="span12">
<?php echo "Path: <b>" , $this->item->location , "</b><br>"; ?>
<?php echo "<img src=\"" , $this->item->location , "\">"; ?>
</div>
</div>
</div>
<div class="span3">
<?php echo JLayoutHelper::render('joomla.edit.global', $this); ?>
</div>
</div>
_
$this->form->renderField();
を動作させる方法がわかりません。
私は https://docs.joomla.org/Creating_a_custom_form_field_type/en を読みましたが、これは問題の半分しか解決しません。
私の教育では、このコンポーネントを mise en place に注意して提供したいので、ベストプラクティスのみを提案してください。
具体的には:
JFormFieldNoteを拡張できるように、_com_image/models/fields
_に新しい.phpファイルを作成しますか?もしそうなら、どうすれば_$this->item->location
_値をgetLabel()
に渡すことができますか?そして、edit.phpから新しいカスタムノートを呼び出す方法を教えてください。 _com_image/config.xml
_を変更したくないですよね?
現在のスクリーンショット:
私の目的にはGDPの答えが正しくないと思います: PHPからフォームのXMLを動的に生成するにはどうすればよいですか?
これはそうではありません: カスタム「動的」フォームフィールドの作成
これはかなり近いと思います: カスタムフィールドの引数を渡す
pS image要素を処理するより良い方法があれば、私もそれを聞いてうれしいです。
Form::setFieldAttribute()
を使用します。通常、これはモデルのgetForm()
メソッドで行われます。ただし、外観のみの場合は、ビューでも実行できます。
/ administrator/com_image/models/forms/image.xml(_<fieldset>
_以外でも問題ありません)の場合:
_<field
name="myNote"
type="note"
class="alert alert-info"
/>
_
/ administrator/com_image/views/image/view.html.php($this->addToolbar();
の直前):
_$this->form->setFieldAttribute('myNote', 'label', $this->item->location);
_
/ administrator/com_image/views/image/tmpl/edit.phpで:
_echo $this->form->renderField('myNote');
_
XMLファイルを編集せずにフィールドを作成するには:
_$note = new \SimpleXMLElement('<field />');
$note->addAttribute('name', 'myNote');
$note->addAttribute('type', 'note');
$note->addAttribute('label', $this->item->location);
$note->addAttribute('class', 'alert alert-info');
$this->form->setField($note);
_