アプリケーションでルックアップフィールドのようなものを作成しようとしています。
ユーザーが参照ボタンをクリックすると、内部にグリッド(CGridView)を含むダイアログ(ウィジェット)がポップアップ表示されます。ユーザーは行を選択でき、「説明」列がテキストフィールドに送信されてフォームに送られます。
次のスクリプトをフォームに登録して、この部分をすでに実行しました。
Yii::app()->clientScript->registerScript('scriptName', '
function onSelectionChange()
{
var keys = $("#CGridViewUsuario > div.keys > span");
$("#CGridViewUsuario > table > tbody > tr").each(function(i)
{
if($(this).hasClass("selected"))
{
$("#Funcionario_UsuarioId").val($(this).children(":nth-child(1)").text());
}
});
}
');
そして私のウィジェット:
<?php $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
'id'=>'mydialog',
'options'=>array(
'title'=>'Usuário',
'width' => 'auto',
'autoOpen'=>false,
),
));
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => Usuario::model()->searchByLogin($model->UsuarioId),
'id' => 'CGridViewUsuario',
'filter' => Usuario::model(),
'columns' => array(
'Login',
'Nome',
),
'htmlOptions' => array(
'style'=>'cursor: pointer;'
),
'selectionChanged'=>'js:function(id){ onSelectionChange(); }',
));
$this->endWidget('zii.widgets.jui.CJuiDialog');
?>
今、私がしなければならない2つのタスクがあります:
ユーザーが参照ボタンをクリックすると、フォームに入力した入力がフィルターに入力された状態でCGridViewが表示されます。
CGridViewフィルターを機能させます。
これがすべて正常に実行された場合、ユーザーが保存ボタンをクリックしたときに、lookupFieldの対応するIDをモデルに保存する必要があることを忘れないでください。