首页 > 代码库 > YII插件

YII插件

 

 

dropDownList:

Yii中可以采用CHtml类来实现,也可以用CActiveForm来实现。
一、用CHtml来实现。
VIEW中实现:

<?phpecho CHtml::dropDownList(‘country_id‘,‘‘, array(1=>‘USA‘,7=>‘France‘,3=>‘Japan‘),array(‘ajax‘ => array(‘type‘=>‘POST‘, //request type‘url‘=>Yii::app()->createUrl(‘project/dynamiccities‘),‘update‘=>‘#city_id‘, ‘data‘=>array(Yii::app()->request->csrfTokenName=>Yii::app()->request->getCsrfToken(),‘country_id‘=>‘js $("#country_id").val()‘))));echo CHtml::dropDownList(‘city_id‘,‘‘, array());?>

controller中实现:

public function actionDynamiccities(){  $data=Parts::model()->findAll(‘prent_id=:prent_id‘,array(‘:prent_id‘=>(int) $_POST[‘country_id‘]));  $data=CHtml::listData($data,‘id‘,‘name‘);  foreach($data as $value=>$name)  {    echo CHtml::tag(‘option‘,    array(‘value‘=>$value),CHtml::encode($name),true);  }}

 

二、用CActiveForm来实现
在VIEW中实现:

<?php echo $form->dropDownList($model,‘province_id‘,$provinceList(这个值可以通过render传递到页面),array(  ‘empty‘=>‘-请选择-‘,  ‘ajax‘=>array(  //指定请求地址  ‘url‘=>Yii::app()->createUrl(‘site/dynamicCity‘),  //请求数据  ‘data‘=>array(‘pid‘=>‘js:this.value‘),  //操作元素  ‘update‘=>‘#SosInfo_city_id‘,(注意这个update的值很容易弄错,它由两部分组成:模型+ID,模型->是指本CActiveForm所承载的model名称)  ),)); ?>

 

<?php     echo $form->dropDownList($model,‘city_id‘,City::model()->getCityList($model->province_id),array(‘empty‘=>‘-请选择-‘)); ?>

 

如果是静态的:
$form->dropDownList($model, ‘field_name‘, array(1=>‘test1‘, 2=>‘test2‘))
如果是动态的:
$form->dropDownList( $model, ‘name‘, CHtml::listData( modelname::model()->findAll(), ‘id‘, ‘name‘) );

$form是你view中生成的form, 根据你生成form名字不同,修改它,$model是你对应的模型的名字,也是你自己定, name是和你model数据表中字段的名字一致就行,modelname是模型对应的类名,比如说你的是User,那这里就是 UserRole::model()->findAll()。id和name是你要去列表的那个表中字段,第一个是将作为option的 value,第二个显示名字。

典型应用场景:
创建user时,需要选择user的角色,有个表专门定义user的角色,表名是UserRole,User这个表中有一个外键role,它的值是UserRole的主键,UserRole的主键是id,另外一个字段是name,我们将显示给用户。
那么上面的哪一行代码变成:

$form->dropDownList( $model, ‘name‘, CHtml::listData( UserRole::model()->findAll(), ‘id‘, ‘name‘) );

 

yii jquery折叠、弹对话框、拖拽、滑动条、ol和ul列表、局部内容切换

 <?php Yii::app()->clientScript->registerCoreScript(‘jquery‘);?> <?php//yii折叠效果(CJuiAccordion)$this->widget(‘zii.widgets.jui.CJuiAccordion‘, array(     ‘panels‘=>array(         ‘分类1‘=>‘分类1的内容‘,         ‘分类2‘=>‘分类2的内容‘,         // 分类可以渲染一个页面,例如分类3         //‘分类3‘=>$this->renderPartial(‘_partial‘,null,true),     ),     ‘options‘=>array(         ‘animated‘=>‘bounceslide‘,     ), ));?> <?php//按钮加js弹框提示  $this->widget(‘zii.widgets.jui.CJuiButton‘,        array(            ‘name‘=>‘button‘,            ‘caption‘=>‘提交‘,            ‘value‘=>‘asd‘,            ‘onclick‘=>‘js:function(){alert("提交成功!"); this.blur(); return false;}‘,        )  );?> <?php//谈对话框$this->beginWidget(‘zii.widgets.jui.CJuiDialog‘, array(  ‘id‘=>‘mydialog‘,  // additional javascript options for the dialog plugin  ‘options‘=>array(    ‘title‘=>‘对话框‘,    ‘autoOpen‘=>false,  ),));    //输出弹出框的内容    //echo $this->renderPartial(‘_form‘,null,true); $this->endWidget(‘zii.widget.jui.CJuiDialog‘); //打开对话框的链接echo CHtml::link(‘登录‘, ‘#‘, array( ‘onclick‘=>‘$("#mydialog").dialog("open"); return false;‘,));?> <?php//拖拽 $this->beginWidget(‘zii.widgets.jui.CJuiDraggable‘, array(     // additional javascript options for the draggable plugin     ‘options‘=>array(         ‘scope‘=>‘myScope‘,     ), ));     echo ‘拖拽的内容!‘; $this->endWidget();?> <?php//ol列表  $this->widget(‘zii.widgets.jui.CJuiSelectable‘, array(      ‘items‘=>array(          ‘id1‘=>‘Item 1‘,          ‘id2‘=>‘Item 2‘,          ‘id3‘=>‘Item 3‘,      ),      // additional javascript options for the selectable plugin      ‘options‘=>array(          ‘delay‘=>‘300‘,      ),  ));//ul列表  $this->widget(‘zii.widgets.jui.CJuiSortable‘, array(      ‘items‘=>array(          ‘id1‘=>‘Item 1‘,          ‘id2‘=>‘Item 2‘,          ‘id3‘=>‘Item 3‘,      ),      // additional javascript options for the accordion plugin      ‘options‘=>array(          ‘delay‘=>‘300‘,      ),  ));?> <?php//滑动条  $this->widget(‘zii.widgets.jui.CJuiSlider‘, array(      ‘value‘=>37,      // additional javascript options for the slider plugin      ‘options‘=>array(          ‘min‘=>10,          ‘max‘=>50,      ),      ‘htmlOptions‘=>array(          ‘style‘=>‘height:20px;‘      ),  ));?> <?php//局部内容切换  $this->widget(‘zii.widgets.jui.CJuiTabs‘, array(      ‘tabs‘=>array(          ‘分类1‘=>‘分类1‘,          ‘分类2‘=>array(‘content‘=>‘分类2‘, ‘id‘=>‘tab2‘),          //‘分类3‘=>$this->render(‘_form‘,null,true),//渲染一个页面          // panel 3 contains the content rendered by a partial view          //‘AjaxTab‘=>array(‘ajax‘=>$ajaxUrl),      ),      // additional javascript options for the tabs plugin      ‘options‘=>array(          ‘collapsible‘=>true,      ),  ));?>