The easiest way to update content in AJAX is to use the partialRender method.
For this exemple I have three files: a controller (HelloWorldController.php) and two views (index.php and _ajaxContent.php)
The actionIndex set myValue to "Content loaded" and this variable is passed to the view "index.php" and to "_ajaxContent.php"
Note: if using accessRules() in your controller file, you will need to modify accessRules() by adding the appropriate part of the function name to a rule set - in this case 'updateajax' like this:
The ajaxButton call "actionUpdateAjax" and the returned data are inserted in the div "data"
Display $myValue
Now, run index.php?r=helloWorld
Enjoy!
For this exemple I have three files: a controller (HelloWorldController.php) and two views (index.php and _ajaxContent.php)
controllers/HelloWorldController.php
class HelloWorldController extends CController { public function actionIndex() { $data = array(); $data["myValue"] = "Content loaded"; $this->render('index', $data); } public function actionUpdateAjax() { $data = array(); $data["myValue"] = "Content updated in AJAX"; $this->renderPartial('_ajaxContent', $data, false, true); } }
Note: if using accessRules() in your controller file, you will need to modify accessRules() by adding the appropriate part of the function name to a rule set - in this case 'updateajax' like this:
array('allow', // allow all users to perform 'index' and 'view' actions 'actions'=>array('index','view','updateajax'), 'users'=>array('*'), ),
views/helloWorld/index.php
<div id="data"> php $this->renderPartial('_ajaxContent', array('myValue'=>$myValue)); div> php echo CHtml::ajaxButton ("Update data", CController::createUrl('helloWorld/UpdateAjax'), array('update' => '#data'));
views/helloWorld/_ajaxContent.php
Now, run index.php?r=helloWorld
Enjoy!
No comments:
Post a Comment