1

バックエンドコンポーネントのデフォルトビュー(default.php)でカスタムフィールドを読み込もうとしています:

JFormHelper::addFieldPath(JPATH_COMPONENT . '/models/fields');
$productType = JFormHelper::loadFieldType('ProductType',false);

$productTypeOptions = $productType->getOptions(); 

しかし、致命的なエラーが発生します。

Fatal error: Call to a member function children() on a non-object in xxx\libraries\joomla\form\fields\list.php on line 89

このカスタムフィールドをフォームにロードすると、すべてが完全に機能します。

何か案は?

4

3 に答える 3

1

フィールドに正しいパスを追加していることを確認してください

于 2012-12-13T21:53:00.753 に答える
0

さて、私は私の仲間を上記のアイデアに拡張しようとしましたが、それは不適切な編集のようでした、それから私はそれをここに置きました:

これは私のために働いた。getOptionsに、ここ(http://docs.joomla.org/How_to_add_custom_filters_to_component_admin)にあるgetOptionsのようなものがある場合は、次の行があります。

$ options = array_merge(parent :: getOptions()、$ options);

これがエラーの原因です。なんで?よくわかりません。関連ファイルを見ると、次のことがわかります。

foreach($ this-> element-> children()as $ option)

したがって、問題は、モデルの親で、初期化されていないように見えるchildren()を呼び出していることです。なぜarray_mergeが必要なのですか?ここで説明されています(http://forum.joomla.org/viewtopic.php?f=626&t=782877

私の説明は汚れたブラインドパッチのようなものですが、それが前進するのに役立つことを願っています。

于 2013-03-21T10:31:55.423 に答える
0

あなたの$productType->getOptions()関数では、削除してみてください:
$options = array_merge(parent::getOptions(), $options);

于 2013-02-12T09:42:26.437 に答える