質問: component-creator:コンポーネント開発ヘルプ http://component-creator.com/ を使用してコンポーネントを作成しました#__competition_dataと#__competition_entriesの2つのテーブルがあります。空のビューもあります#__competition_dataテーブルは、フロントエンドフォームから、コンテストが(バックエンドで)追加される場所であり、#__ competition_entriesは、エントリが格納される場所です。空のビューで、_data(競争のタイトルなど)を表示し、その下に(_entriesからの)フォームを表示できるようにしたいと思います。私はcomponent-creatorのプレミアムアカウントを持っていますが、彼らは私のサポートリクエスト(私は契約違反だと思いますが、それは別の話です)で私をもはや助けることができないと言っています。私は編集する必要があることを知っています:models/frontendv1ewform.php view/frontendv1ewform/view.html.php view/frontendv1ewform/tmpl/default.phpしかし、私はどこが間違っているのか理解できないようです。 joomla.orgのドキュメントを読みましたが、それでも解決できません!私が間違っているアイデアはありますか?
回答: これが正しければ、1つのテーブルのデータのリストと、同じビューにある他のテーブルのフォームが必要です。この種のビューは複数のモデルを使用するため、最も簡単な作業ではありません。これは、コンポーネントクリエーターが作成される対象の範囲外である可能性が非常に高いため、サポートを提供しなくなります。それは理解できます。これが最初のコンポーネントである場合は、別のアプローチを探すことをお勧めします。ボタンをクリックしてフォームをロードするようなものです(たぶんモーダルで)。その後、フォームは通常のフォームビューになり、データの通常のビューリストがあるので簡単です。joomla mvcに慣れている場合は、コントローラー内に2つのモデルを割り当てて、ビュー内のモデルから必要なデータをロードできます。私のコンポーネントでは、アクティブビューに基づく表示メソッドのメインコントローラー(controller.php)でそれを行いました。このようなもの:// add additional models $viewname = $this->input->get('view', 'default_view'); $format = $this->input->get('format', 'html'); switch ($viewname) { case 'foo': $viewlayout = $this->input->get('layout', 'default'); $view = $this->getview($viewname, $format, '', array('base_path' => $this->basepath, 'layout' => $viewlayout)); $view->setmodel($this->getmodel('foo')); $view->setmodel($this->getmodel('bar')); break; case '...': ... break; }