動的データとZendのフォームを生成?
-
26-09-2019 - |
質問
私は私のドロップダウンリストのオプションとして使用するデータベースからグラブのものに必要なセッションプロパティに基づいて自分のセッションにアクセスしてする必要があります。
$ _ 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;
私は自分のフォームページにこのコードを持っているが、私は今、私のモデルにそれを移動する必要があります。
解決
そこでここではあなたの問題はありますか?
これらのアカウントを取得するには、データベースに適切なクエリを作成します。
の結果から、適切な配列を作成します。 (ID =>タイトル)
あなたはすでに既存の要素のオプションを設定することができます:
$element = $form->getElement('account');
$element->setMultiOption( $option_array );
あなたはDB OBJ、セッションOBJを受け入れるフォームクラスのメソッドを作成し、負荷に必要なアクションを実行すると、これらのオプションを設定することができます。
<時間>アプリケーション/モジュール/ fooの/モデル/ DBTABLE /社会であるモデル、モデルクラス名はModel_DbTable_Socialで、モジュールがfooです。致命的なエラーをスローします:
あなたのDB-テーブルクラスは、おそらく名前を付ける必要があります:
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のフレームワークの教義、およびMVCパターン:種類層の何がモデルとフォームの間でデータを接続する必要がありますの? ではないが、あまりにも多くのソリューション