How can i do a dependent Activecheckboxlist
i tray to insert something similar for the dependent dropdownlist but i cant to make it work
actuali the activecheckboxlist filter my content.
it work realy good, but i wont to show de dependent checkboxlist depends on the first selection.
How can i do it?
this is mni view.php
<?php
$this->breadcrumbs=array(
'Posts',
);
/*$this->menu=array(
array('label'=>'Create Post', 'url'=>array('create')),
array('label'=>'Manage Post', 'url'=>array('admin')),
);
?>*/
?>
<h1>Posts</h1>
<?php
Yii::app()->clientScript->registerScript('index',
"var ajaxUpdateTimeout;
var ajaxRequest;
$('.categoryFilter').change(function(){
$.fn.yiiListView.update(
'ajaxListView',
{
url: '" . CController::createUrl('Post/index') . "',
data: $('.categoryFilter, .marcaFilter').serialize(),
}
);
});
$('.marcaFilter').change(function(){
$.fn.yiiListView.update(
'ajaxListView',
{
url: '" . CController::createUrl('Post/index') . "',
data: $('.categoryFilter, .marcaFilter').serialize(),
}
);
});
$('.modeloFilter').change(function(){
$.fn.yiiListView.update(
'ajaxListView',
{
url: '" . CController::createUrl('Post/index') . "',
data: $('.categoryFilter, .marcaFilter,.modeloFilter').serialize(),
}
);
});
"
);
?>
<table style="width:910px;"><tbody><tr valign="top"><td valign="top" style="vertical-align:top; width:200px;">
<br />
<h5>Categorias</h5>
<?php
$categoria = new CDbCriteria;
$categoria->order = 'name ASC';
echo CHtml::activeCheckboxList(
$model, 'categoria_id', CHtml::listData(Categoria::model()->findAll(), 'id', 'name'),
array('template'=>'<li>{input} {label}</li>', 'class'=>'categoryFilter',)
);
?><br /><h5>Marca</h5><?php
$marca = new CDbCriteria;
$marca->order = 'name ASC';
echo CHtml::activeCheckboxList(
$model, 'marca_id', CHtml::listData(Marca::model()->findAll(), 'id', 'name'),
array('template'=>'<li>{input} {label}</li>', 'class'=>'marcaFilter',)
);
?>
<br /><h5>Modelos</h5><?php
echo CHtml::activeCheckboxList(
$model, 'modelo_id', CHtml::listData(Modelo::model()->findAll(), 'id', 'name'),
array('template'=>'<li>{input} {label}</li>', 'class'=>'modeloFilter',)
);
?>
</td><td style="vertical-align:top; width:900px;">
<?php
$this->widget('zii.widgets.CListView', array(
'id'=>'ajaxListView',
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
//'filter'=>$model->search(),
'sortableAttributes'=>array(
'id',
'title',
'categoria_id'
),
'pager' => array(
'prevPageLabel'=>'< Prev',
'nextPageLabel'=>'Next >',
'header'=>'Pagina: ',
'pageSize'=>5,
),
));
?>
</td></tr></tbody></table>
this is my controllerphp
public function actionIndex( array $categoria_id = array(), array $marca_id = array(),array $modelo_id = array() )
{
$categoria_id = (isset($_GET['Post']['categoria_id'])) ? $_GET['Post']['categoria_id'] : array();
$marca_id = (isset($_GET['Post']['marca_id'])) ? $_GET['Post']['marca_id'] : array();
$modelo_id = (isset($_GET['Post']['modelo_id'])) ? $_GET['Post']['modelo_id'] : array();
CVarDumper::dump($categoria_id);
$model=new Post();
$criteria = new CDbCriteria();
if( count( $categoria_id ) > 0 )
$criteria->addInCondition( 'categoria_id', $categoria_id );
if( count( $marca_id ) > 0 )
$criteria->addInCondition( 'marca_id', $marca_id );
if( count( $modelo_id ) > 0 )
$criteria->addInCondition( 'modelo_id', $modelo_id );
$dataProvider = new CActiveDataProvider( 'Post', array( 'criteria' => $criteria, ) );
$this->render( 'index', array(
'dataProvider' => $dataProvider,
'model'=>$model,
));
}
/**
* Manages all models.
*/
public function actionAdmin()
{
$model=new Post('search');
$this->render('admin',array(
'model'=>$model,
));
}
public function actionDynamicMarcas()
{
$data = Marca::model()->findAll('categoria_id=:categoria_id',
array(':categoria_id'=>(int) $_POST['Post']['categoria_id']));
$data = CHtml::listData($data,'id','name');
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
}
}
public function actionDynamicModelos()
{
$data = Modelo::model()->findAll('marca_id=:marca_id',
array(':marca_id'=>(int) $_POST['Post']['marca_id']));
$data = CHtml::listData($data,'id','name');
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),CHtml::encode($value),true);
}
}
i try to send to ajax request in the same function, but it is imposible
Regards
Hernan