DbHelp.ru
Маленький Yii блог
Комментарии
Гость: wh0cd639169 [url=http://lisinopril20mg.us.com/]lisinopril[/url]
Гость: One of the most interesting advances in the carpentry and deck construction industries over the year...
Гость: Офигеть просто! Все, блин, всё знают, кроме меня Мн...
Гость: wh0cd96231 [url=http://bupropion.live/]bupropion[/url] [url=http://inderal.world/]inderal[/url] [url...
Гость: wh0cd271796 [url=http://viagra50mg.us.com/]viagra 50mg[/url] [url=http://buyrimonabant.us.org/]rimon...



Сервер 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 является отличным инструментом для создания приложения на PHP. Первое с чем сталкивается разработчик на Yii ... "Kohana хелперы в Yii"

  2. Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Настройка 3d капчи на Yii"

  3. Столкнулся с проблемой кодировки при использовании mail() функции в php. Для меня было очень странным что тело письма приходит в ... "Проблемы с кодировкой в теме письма"

[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-----

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


Код:
Имя: