Yiiでマルチモデルフォームを作成するにはどうすればよいですか?Yiiのドキュメント全体を検索しましたが、興味深い結果は得られませんでした。誰かが私にそれについての方向性や考えを教えてもらえますか?どんな助けでもかなりあります。
15012 次
4 に答える
19
私の経験では、このソリューションが機能し、すぐに理解できるようになりました
収集したいデータには2つのモデルがあります。Person
と言いましょうVehicle
。
ステップ1:フォームを入力するためのコントローラーを設定する
コントローラでモデルオブジェクトを作成します。
public function actionCreate() {
$Person = new Person;
$Vehicle = new Vehicle;
//.. see step nr.3
$this->render('create',array(
'Person'=>$Person,
'Vehicle'=>$Vehicle)
);
}
ステップ2:ビューファイルを書き込む
//..define form
echo CHtml::activeTextField($Person,'name');
echo CHtml::activeTextField($Person,'address');
// other fields..
echo CHtml::activeTextField($Vehicle,'type');
echo CHtml::activeTextField($Vehicle,'number');
//..enter other fields and end form
ビューにいくつかのラベルとデザインを配置します;)
on $_POST
ステップ3:コントローラーアクションの書き込み
次に、コントローラーに戻って、POSTアクションの機能を記述します。
if (isset($_POST['Person']) && isset($_POST['Vehicle'])) {
$Person = $_POST['Person']; //dont forget to sanitize values
$Vehicle = $_POST['Vehicle']; //dont forget to sanitize values
/*
Do $Person->save() and $Vehicle->save() separately
OR
use Transaction module to save both (or save none on error)
http://www.yiiframework.com/doc/guide/1.1/en/database.dao#using-transactions
*/
}
else {
Yii::app()->user->setFlash('error','You must enter both data for Person and Vehicle');
// or just skip `else` block and put some form error box in the view file
}
于 2011-07-17T09:41:50.980 に答える
3
これらの2つのYiiwiki記事にいくつかの例があります。
于 2011-07-24T07:02:05.960 に答える
2
マルチモデルは必要ありません。MVCパターンを正しく使用するには、UIを反映したモデルが必要です。
これを解決するには、ActiveRecordの代わりにCFormModelを使用して、ビューからコントローラーにデータを渡す必要があります。次に、コントローラー内でモデル、CFormModelモデルを解析し、ActiveRecordクラス(複数)を使用してデータベースに保存します。
Yii Definitive Guideのフォームの概要とフォームモデルの章には、いくつかの詳細とサンプルが含まれています。
于 2011-07-17T04:50:27.573 に答える
1
別の提案-
また、ウィザードの動作を使用することもできます。これは、マルチステップフォームの処理を簡素化する拡張機能です。登録プロセスフローなどにマルチモデルフォームを使用できます。
于 2014-10-17T11:36:40.593 に答える