1

セッションにアクセスする必要があり、セッション プロパティに基づいて、データベースからデータを取得してドロップダウンのオプションとして使用する必要があります。

$_SESSION は:

[sess_name] => Array(
   [properties] => Array(
      1=> Hotel A,
      2=> Hotel B
   ),
   [selected] => 1
)

選択したものからホテル A を取得し、データベースからホテル A の下のすべてのアカウントにアクセスする必要があります。

id  title                       hotel_id
------------------------------
1    Hotel A Twitter Account     1
2    Hotel B Facebook Account    2
3    Hotel A Facebook Account    1

次のコンテキストで hotel_id が 1 であるため、ID 1 と 3 が必要です。

$this->addElement(  'select', 'account', array(
  'multioptions' => $NEED_IT_HERE
));

これが私のクエリ/セッション取得コードです:

$cs = new Zend_Session_Namespace( SESS_NAME );
$model = new Model_DbTable_Social;
$s = "
    SELECT social_accounts.*
    FROM social_accounts
    LEFT JOIN social_media_outlets ON social_media_outlets.id = social_accounts.property
    WHERE social_accounts.property=".(int)$cs->selectedclient;

フォーム ページにこのコードがありますが、今すぐモデルに移動する必要があります。

4

1 に答える 1

1

それで、あなたの問題はどこですか?

これらのアカウントを取得するには、データベースに対して適切なクエリを実行します。

結果から適切な配列を作成します。( ID => タイトル )

既存の要素にオプションを設定できます。

$element = $form->getElement('account');
$element->setMultiOption( $option_array );

DB obj、Session obj を受け入れ、これらのオプションの読み込みと設定に必要なアクションを実行するメソッドをフォーム クラスに作成できます。


これは application/modules/foo/models/DbTable/Social にあります。モデル クラス名は Model_DbTable_Social で、モジュールは foo です。致命的なエラーをスローします:

あなたの db-table クラスはおそらく次のように命名されるべきです:

Foo_Model_DbTable_Social

また、application.ini には以下が含まれている必要があります。

resources.modules[] = 
; (It is autoloader for modules)

クラス 'Model_DbTable_Social' をフォームで呼び出そうとすると、. それとも、あなたが言及した方が簡単ですか?

chelmertz が言ったように、__construct でこれらのリソースを要求することをお勧めします。関連するテーマについての素晴らしい講演があります: http://www.youtube.com/watch?v=-FRm3VPhseI

「フォームをモデルに接続する場所」に関する私の質問を読みたいと思うかもしれません: zend-framework doctrine, and mvc pattern: how kind of layer should connect data between models between models? あまりにも多くの解決策はありませんが

于 2010-06-09T20:14:32.637 に答える