私は完全に困惑しています!これまでに正常に実行したように、カスタムフィールドをカテゴリにロードしようとしています。これは question/answer で説明されています。カテゴリに関するいくつかの基準に応じて別のフォームをロードしようとするまで、期待どおりに機能します。
両方の場合(条件付きと無条件)、
ただし、フォームが条件付きで読み込まれる場合、フォームは期待どおりに読み込まれますが、保存されません。保存されないだけでなく、元々ロードされていたデータもなくなります!
私の最初の考えは、デフォルトのフォーム名が必要であると考えていましたが、ページをロードし、データを解析して正しくポストするための正しいフォームを決定できたため、何が問題なのかはわかりません。
_$_POST
_保存時の変数:(両方の場合)
_Array
(
[category_layout] =>
[image] =>
[my_pse] => P
[my_extra1] => 1
[my_extra2] => 22
[my_extra3] => 333
)
_
onContentPrepareForm
からのコード
if(true)
テストは、2つのコードブロックを簡単に切り替えるためのものです。
_if(true) {
// Unconditional loading does everything as expected:
// It Saves/Retrieves to/from #__categories.params
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('customfields2', false);
return true;
}else{
// Conditional loading does everything as expected EXCEPT:
// It does not save it #__categories.params
if($pse=='P') {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('customfields1', false);
return true;
}elseif($pse=='S'){
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('customfields2', false);
return true;
}elseif($pse=='E') {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('customfields3', false);
return true;
}else{
return true;
}
}
_
投稿されたとおり、質問に関連性がないと思われるコーディングエラーが原因であったため、質問は基本的に回答できません。私の最初の傾向は質問を削除することでしたが、コーディングエラーの理由は、同様の問題に遭遇する可能性がある人にとっては十分興味深いものだと思いました。
つまり、ロードしたいフォームのタイプを判別するためのコードは$data
を参照しており、保存プロセス中にJoomlaがプラグイン関数を呼び出したときに静かに次のエラーを取得していました。
Notice: Trying to get property of non-object in myplugin\myplugin.php on line 12
おそらく、これがフォームの上流への読み込みを妨げていたため、Joomlaはフォームデータの処理方法を知らなかったため、ドロップしました。
保存中にのみこのエラーが発生する理由は、$data
がonContentPrepareForm
関数に渡されているためです保存中に呼び出されると、空になります。これは私には「正しい」とは思えないので、そこにあったと私は思いますが、それでも警告通知が発せられたため、関数が失敗し、最終的にフォームデータが失われました。