DbHelp.ru
Маленький Yii блог
Комментарии
Гость: klass spasibo avtoru !!!
Гость: lk;
Гость: Как сделать что бы обновлялась статистика?
Гость: У вас код всегда 17.
Гость: Спасибо огромное!)



Сервер Ultima Online - Forest Wars (от создателя данного блога)

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

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

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

Рейтинг: 0.00 (0)
12 Окт. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

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 Blog. Исходные коды я не смотрел, но ... "Yii blog new [update]"

  2. Немного обсудив своё творение «Компонент Rss ленты v 1.0» на русском форуме я решил немного его переделать. Мною было ... "Компонент Rss ленты v2.0"

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

[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 запрос.

[guest] Гость

Было сказано: Четверг, 01 Март 2012

как быть когда я подгружаю контент с еще одной ajaxButton ?
фреймворк почему-то вешает на него событие первой кнопки, т.к. id прописывается id="yt0", хотя должен быть id="yt1"

[guest] zolter

Было сказано: Четверг, 01 Март 2012

Посмотрите api про renderPartial, там третий или четвертый параметр отвечает будет генерироваться js код для динамических объектов на подгружаемой странице или нет

[guest] Гость

Было сказано: Вторник, 21 Август 2012

У меня в <div id="data"></div> загружается вся страница

[guest] Гость

Было сказано: Вторник, 21 Август 2012

>[guest] Гость
>Было сказано: Вторник, 21 Август 2012
>У меня в <div id="data"></div> загружается вся страница

переведите статью до конца

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:

[guest] Гость

Было сказано: Воскресенье, 07 Июль 2013

Спосибо

[guest] Гость

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

ioioioiiioioi

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


Код:
Имя: