フィルターとページネーションを使用してビューを作成する方法 の優れた説明に従って、大部分をフィルターするカスタムフィールドがあります。そのまま、カスタムフィールドのコードはjInput
を介して投稿されたものからフィルタリングデータを取得しており、見事に機能します。ただし、ユーザーがページに戻る場合(なしフィルタリングデータ投稿されている場合)、検索ツールはアクティブなフィルターがあることを検出し、フォームを表示しますが、フィルターデータを入力しません(投稿にはないため、フォームに入力するものはありません)。
明らかに、私はどこか他の場所から、おそらくフォームからフィルタリングデータを取得する必要がありますが、それを取得する方法がわかりません。カスタムフィールドフォームコードでは、フィルターとデータを見ることができますが、それを取得するための正しいメソッドを見つけることができませんレンダリングする前にフォームに入力するため。
カスタムフィールド$this
から、保護されたフォーム、保護されたレジストリオブジェクト、そして最終的に保護されたデータ/フィルターにどのようにアクセスしますか?
JFormFieldMyCustomField Object
(
[type:protected] => mycustomfield
[input_type:JFormFieldMycustomfield:private] =>
.
.
.
[form:protected] => JForm Object (
[data:protected] => Joomla\Registry\Registry Object (
[data:protected] => stdClass Object (
[filter] => stdClass Object (
[search] =>
[myfield2] => 95
[myfield1] => Array (
[0] => 4
[1] => 5
[2] => 6
[3] => 37
)
)
)
5歳の投稿と Occam's Razor を神に感謝します。カスタムフィールドは、私が取得しようとしたフォームに直接アクセスできます!!!!モデル、ヘルパーなどをロードする必要はありません。
$MyField1 = $this->form->getData()->get('filter',array())->myfield1;
$MyField2 = $this->form->getData()->get('filter',array())->myfield2;