このコードを使用してフォームを作成します。
$form=$controller->beginWidget('CActiveForm', array(
'id'=>'my-form',
'enableAjaxValidation'=>false
));
これを行うと、フォームが印刷されます。しかし、フォーム全体がメソッドで文字列として返されるため、これを変数に入れたいと思います。これどうやってするの?
以下は、出力バッファを取得し、それを変数に格納してから消去します。楽しみ!!!
ob_start();
$form=$controller->beginWidget('CActiveForm', array(
'id'=>'my-form',
'enableAjaxValidation'=>false
));
$formToStore = ob_get_clean();
コントローラーの renderPartial メソッドを使用して文字列を返すことができます。フォーム全体を単独でファイルに入れるだけで、それを と呼びましょう_myForm.php
。
次に、この行を使用して、フォームの内容を変数に書き込みます$form
。
$form = $controller->renderPartial('//stuff/_myForm', $data, true);
に設定された 3 番目のパラメーターtrue
は、エコーする代わりに、その renderPartial の内容を返します。これには、ウィジェット自体のエコーを「オーバーライド」することが含まれます。
この$data
パラメーターには、フォームに渡す必要があるすべての変数が含まれます。
ファイル自体はフォルダーにある必要がありprotected/views/stuff/
ます。//
最初のパラメーターの開始は、protected/views/
フォルダーのショートカットです。
'_myForm'
または、そのファイルが renderPartial の呼び出し元と同じビュー フォルダーにある場合は、最初のパラメーターのみに使用します。
注: これは、ob_start
およびを使用するオプションと実際には機能的に違いはありませんob_get_clean
。それは単にそれを行うためのより多くの Yii の方法です。状況の詳細に応じて、あるバージョンが他のバージョンよりも有利な場合があります。