DbHelp.ru
Маленький Yii блог
Комментарии
Гость: Быстро и качественно придам вашему фото идеальный вид....
Гость: Информативно,продолжай в том же духе [url=http://forum.oncolo...
Гость: drugs to treat hypotension tenze24.tumblr.com hot to stop snoring
Гость: z yoga classes beginner yoga classes near me j yoga classes near me http://beginneryogaclassesnear...
Гость: Несколько минут познавал содержание сети интернет, сл...



Сервер 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. Александр Макаров на страницах yiiframework.ru опубликовал перевод очень хорошего рецепта. Хочу заметит что материал будет очень полезен для тех, кто ... "Краткий справочник по валидации форм"

  2. Подсветка php кода на страницах блога — штука невероятно удобная. Давайте в двух словах разберемся как я подкрутил её у ... "Подсветка синтаксиса"

  3. Серия рецентов "By Example" пытается предоставить для разработчиков примеры использования самых распостраненных действий в Yii. Учимся использовать CHtml::link() на примерах! [+update ... ""By Example" : CHtml - link()"

[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

[guest] Гость

Было сказано: Четверг, 02 Февраль 2017

Пройдите 1 регистрацию, сделайте 2 действия
и получайте от 8950 рублей каждые сутки в автоматическом режиме.

Мы гарантируем:
- Первый заработок в течении 60 минут.
- Стабильный доход 24 часа в сутки.
- Поступление денег без задержек.
- Для России, стран СНГ и Европы.
- Без вложений и установки ПО.
- Специально для новичков и людей без опыта.

Более подробная информация на нашем сайте. ( http://prosto.zarplatt.ru/ )

[guest] Гость

Было сказано: Четверг, 02 Февраль 2017

Интересная работа или подработка за компьютером.
Мы предлагаем: Достойная зарплата без задержек, справка 2-НДФЛ, карьерный рост, бесплатное обучение,
свободный график, страховые взносы в Пенсионный фонд, официальный договор (по желанию).
График работы, Вы определяете в пределах Ваших возможностей.
Ваш возраст и образование значения не имеют.
Обязательные условия: наличие компьютера и интернета.
Ваши действия:
1. На сайте ( www.off-rabota.tk ) скачайте и установите приложение.
2. Ознакомьтесь с содержимым.
3. Пройдите несложную регистрацию.
4. Обязательно, пройдите курсы обучения. (Бесплатно)
5. Начинайте зарабатывать!
Зарплату мы перечисляем только на банковскую карту любой платёжной системы.
(Для работы советуем оформить отдельную карту)
ВНИМАНИЕ! Весь процесс регистрации, обучения совершенно бесплатны. Не попадитесь в руки мошенников!

-----JGHHJ16FU16G1U6F51J6F1J6R1UY6F5Y-----

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


Код:
Имя: