【发布时间】:2012-07-17 11:34:19
【问题描述】:
我是 Yii 框架的新手。我想创建一个页面。即当下拉列表发生变化时,listview/gridview 会随着下拉值的变化而变化。
这是我的看法
<div class="row">
<?php
$records = Company::model()->findAll();
$company_list = CHtml::listData($records, 'id', 'name');
echo CHtml::dropDownList('company_id','', $company_list,
array(
'onchange'=>"$.fn.yiiListView.update('ajaxListView', {url: '".Yii::app()->createUrl('department/dynamicsectionlist')."?company_id='+$('#company_id option:selected').val()})",
'prompt'=>'Please select a company',
)); ?>
</div>
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view_section',
'id'=>'ajaxListView',
));
?>
这是模型
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('name',$this->name,true);
$criteria->compare('p_id',$this->p_id);
$criteria->compare('created',$this->created,true);
$criteria->compare('updated',$this->updated,true);
$criteria->compare('company_id',$this->company_id);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
这是控制器
public function actionDynamicsectionlist()
{
$company_id = $_POST['company_id'];
$criteria=new CDbCriteria();
$criteria->condition .= 't.id IN (SELECT t2.id, t2.name FROM department t2 WHERE t2.company_id = :company_id)';
$criteria->params[':company_id'] = $company_id;
$dataProvider = new CActiveDataProvider( 'Department', array( 'criteria' => $criteria, ) );
$this->render( 'sectionlist', array( 'dataProvider' => $dataProvider ) );
}
但它不起作用。请帮帮我。
问候 塔尔索
【问题讨论】:
-
如果在控制器里把
$company_id = $_POST['company_id'];改成$company_id = $_GET['company_id'];呢? -
检查 firebug 中的 Network 选项卡以查看发送到服务器的内容和/或尝试回显
$_POST和$_GET的内容。还要检查 js/php 错误。 -
我已经试过了。但不工作。当我使用 firebug 进行跟踪时,company_id GET localhost/mmaig_ceo/ceo-control-system/… 没有参数。
-
你能指定你看到的错误是什么吗? “但它不起作用”不是很有帮助。您提到您使用过萤火虫- onchange 事件会触发吗?它访问什么 URL? company_id 参数是否正确传递? 'sectionlist' 视图的渲染是否发生?
标签: yii