私はmysqlに3つのテーブルを持っています
私が Cityid Cityname を持っている都市
labelid langid と text を持つラベル
langid、langname、および有効になっている言語テーブル
これで、cityname=labelid text が実際の名前を保持し、language が言語名を保持するため、3 つのテーブルが相互に関連付けられます。
都市テーブルは `
都市 ID=1、都市名=3000
都市 ID=2、都市名=3001
`
ラベルテーブルは
labelid =3000、langid=1、text=ニューヨーク
labelid =3000、langid=23、text=中国語のニューヨーク
labelid= 3001、langid=1、text= ムンバイ
言語テーブルは
`langid=1、lagname=英語、enabled=1
言語 ID=23、言語名=中国語、有効=1`
今私が達成したことは、都市のデータをグリッド ビューで表示し、すべての言語のドロップダウンを表示することです。enabled=1
やりたいことは、ドロップダウンから選択した言語に従ってグリッドの内容を変更することです。
そのため、ドロップダウンで中国語を選択すると、すべての都市名が中国語で表示されます。
私のビューコードは
$Labelcriteria = new CDbCriteria;
$Labelcriteria->condition = ("enabled=1");
$langarray= Language::model()->findAll($Labelcriteria);
$i=-1;
foreach ($langarray as $lang)
{
$i=$i+1;
$langName[$i]=$lang->langname;
}
//echo CHtml::dropDownList('select_box_name','select_value',$langName,array('onchange' => 'alert(1)',));
echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php
$this->renderPartial('_search',array('model'=>$model,));
?>
</div><!-- search-form -->
<?php
echo CHtml::dropDownList('select_box_name','select_value',$langName, array(
'onchange'=>'alert(1)',
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('cityController/dynamiccities'),
)
));
$this->widget('zii.widgets.grid.CGridView',
array('id'=>'city-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array('citycode', 'cityname',array('class'=>'CButtonColumn',),),));
?>
私のモデルは
public function search()
{
$criteria=new CDbCriteria;
$criteria->select = 't.citycode,lbl.text as cityname ';
$criteria->join = 'inner join labels lbl on t.cityname=lbl.labelid inner join language lng on lbl.langid=lng.langid';
$criteria->order = 'lbl.text ASC';
$criteria->condition=$someway_to_change_dynamically_using_dropdown;
$criteria->compare('citycode',$this->citycode,true);
$criteria->compare('cityname',$this->cityname,true);
// $criteria->compare('cityid',$this->cityid);
// $criteria->compare('seq_no',$this->seq_no);
// $criteria->compare('enable',$this->enable);
return new CActiveDataProvider($this, array('criteria'=>$criteria,));
}
どんな助けでも本当に感謝します
これは、ビュー ファイルをレンダリングするコントローラー アクションです。
public function Admin()
{
$model=new City();
$model->unsetAttributes(); // clear any default values
if(isset($_GET['City']))
$model->attributes=$_GET['City'];
$this->render('admin',array('model'=>$model));
}