web-dev-qa-db-ja.com

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のドキュメントを読みましたが、それでも解決できません!私が間違っているアイデアはありますか?

3
RustyJoomla

これが正しければ、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;
}
3
Bakual