Chciałem za pomocą Html::ajaxLink załadować zawartość (moduły) do odpowiednich widoków. Wzorowałem się na metodzie renderPartial ( http://www.yiiframework.com/doc/cookbook/49/ ). Jednak Linki tworzę nie w widoku tylko w kontrolerze ponieważ są to elementy JTreeView także tworzone dynamicznie przez ajaxa.
Metody kontrolera wyglądają nastepująco:
Metoda ajaxFillTree
public function actionAjaxFillTreeJednostki(){
if (!Yii::app()->request->isAjaxRequest) {
exit();
}
$parentId = 0;
if (isset($_GET['root'])) {
$parentId = (int) $_GET['root'];
}
$children = Jednostki::model()->findAllByAttributes(array('rodzic'=>$parentId));
for($i=0;$i<sizeof($children);$i++){
$data[$i]['text'] = CHtml::ajaxLink(
$children[$i]->nazwa,
CController::createUrl('sis/UpdateAjax'),
array( 'update' => '#data',
'type'=>'GET',
'data'=>array('id'=>$children[$i]->id),
)
);
$maDzieci = Jednostki::model()->findByAttributes(array('rodzic'=>$children[$i]->id));
if(isset($maDzieci)){
$data[$i]['hasChildren']=true;
}
else{
$data[$i]['hasChildren']=false;
}
$data[$i]['id']=$children[$i]->id;
}
echo CTreeView::saveDataAsJson($data);
exit();
}
Metoda odpowiedzialna za renderowanie zawartosci
public function actionUpdateAjax()
{
$data = array();
$id = $_GET['id'];
$data['info']='to jest ajax, id: '.$id;
$data['dInformacje'] = Jednostki::model()->findByPk($id);
$this->renderPartial('_ajaxContent', $data, false, true);
}
}
i widoki renderownej zawarosci
wyswietl.php
<div id="data">
<?php echo $this->renderPartial('_ajaxContent',array(
'info'=>$info,
'dInformacje'=>$dInformacje,
));
?>
</div>
ajaxContent.php
<div id="informacje_glowne">
<?php echo $info;?>
<?php echo "<br />".$dInformacje->nazwa?>
</div><!-- informacje_glowne -->
Po kliknięciu w wygenerowane linki (w drzewie) nic się nie renderuje. Dlaczego?