DbHelp.ru
Маленький Yii блог
Комментарии
zolter: Спасибо за хороший отзыв. Постараюсь уделять на статьи больше времени, особенно на обучающие...
den: Ух ты! между этой статьёй и прошлой год разницы. Я как-то прочитал все статьи одним махом и теперь п...
ATI: Хорошее решение для нотисов в админке. Спасибо автору.
wlnner: Не забыл. Есть.
wlnner: Не забыл. Есть.


Обновление содержимого через AJAX используя renderPartial()

Рубрика: Перевод Cookbook

Оцените эту статью:

Рейтинг: 0.00 (0)
12 Окт. 2009

Yii Framework Blog img Yii Framework Blog img Yii Framework Blog img http://dbhelp.rucookbook

Наиболее легкий способ обновления содержимого через Ajax, это использование метода partialRender(). Давайте научимся им пользоваться!

---

 

 

Для этого примера у меня есть три файла : контроллер (HelloWorldController.php) и два отображения (index.php и _ajaxContent.php)

controllers/HelloWorldController.php:

class HelloWorldController extends CController
{
    public function actionIndex()
    {
        $data = array();
        $data["myValue"] = "Данные загружены";
 
        $this->render('index', $data);
    }
 
    public function actionUpdateAjax()
    {
        $data = array();
        $data["myValue"] = "Данные обновлены через AJAX";
 
        $this->renderPartial('_ajaxContent', $data, false, true);
    }
}

В actionIndex() я устанавливаю myValue равной значению "Данные загружены" и передаю её в "index.php" и "_ajaxContent.php". actionUpdateAjax() - используйется для изменения переменной, и через renderPartial отдает новое значение.

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'));
?>

При клике на кнопку (ajaxButton) вызывается actionUpdateAjax() и полученное значение вставляется в div "data".

views/helloWorld/_ajaxContent.php

<?php echo $myValue ?>

Просто отображаем $myValue

 

Вот и все. Запускайте index.php?r=helloWorld и пользуйтесь!

 



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Как я вам и обещал — сегодня состоялся релиз новой версии Yii. Это совершенно новая ветка развития любимого фреймворка и ... "Yii PHP framework 1.1 alpha is released"

  2. Сегодня мы поговорим с вами о том как изменить генератор символов на капче. Часто мне стали приходить сообщения на почту ... "Как на Yii капче выводить цифры"

  3. Сегодня ночью разработчик Yii порадовал нас новым релизом Я очень рад что фреймворк отлично развивается и проект действительно имеет своё будущее. Пару ... "Релиз Yii 1.0.4"

[guest] RSol

Было сказано: Понедельник, 12 Октябрь 2009

А почему так:

CController::createUrl('helloWorld/UpdateAjax'),

я обычно использую


array('helloWorld/UpdateAjax'),

и все работает?

[adm] zolter

Было сказано: Понедельник, 12 Октябрь 2009

Дело в том что когда ты делаешь через createUrl, Yii сам формирует путь согласно правилу (если найдет) указанному в маршрутах твоего приложения.

[guest] RSol

Было сказано: Вторник, 13 Октябрь 2009

у меня тоже формирует :-)

[adm] zolter

Было сказано: Вторник, 13 Октябрь 2009

хы )

[guest] Sam

Было сказано: Среда, 14 Октябрь 2009

partialRender → renderPartial

[adm] zolter

Было сказано: Среда, 14 Октябрь 2009

Сенк. Просто с англ. названия переводил, что то пропустил между глаз :)

[guest] Гость

Было сказано: Пятница, 13 Ноябрь 2009

А как навесить на изменение текстового инпута вызов аякс-метода? То есть как suggest на Google и т.п., когда под вормой ввода открываются подсказки?

[guest] Гость

Было сказано: Понедельник, 16 Ноябрь 2009

Решение было простейшее — CAutoComplete
Вопрос снят.

[adm] zolter

Было сказано: Понедельник, 16 Ноябрь 2009

Сори показалось что ответил вам . Там в кукбуке официальном еще пример есть по этому поводу

[guest] Гость

Было сказано: Понедельник, 16 Ноябрь 2009

А yii в любой ОС работает (кроссбраузерный)?)

[adm] zolter

Было сказано: Понедельник, 16 Ноябрь 2009

Уии использует jQuery. Он в принципе поддерживает все современные браузеры

[guest] Гость

Было сказано: Понедельник, 16 Ноябрь 2009

И хотел бы узнать во всех Операционных системах yii работает

[adm] zolter

Было сказано: Понедельник, 16 Ноябрь 2009

Это php фреймворк. Он будет работать везде где вы поднимите веб-сервер. Для windows к примеру xampp, для linux - lampp. Для макинтошей тоже что то есть. Так что да.

[guest] Саша

Было сказано: Пятница, 20 Август 2010

А как же Yii::app()->request->isAjaxRequest
Такой подход будет более гибким

[guest] zolter

Было сказано: Пятница, 20 Август 2010

Это ж перевод. Но "Yii::app()->request->isAjaxRequest" конечно следует использовать для проверки действительно ли ajax запрос.

Оставить комментарий


Код:
Имя: