Обновление содержимого через AJAX используя renderPartial()
Рубрика: Перевод Cookbook
12 Окт. 2009
Наиболее легкий способ обновления содержимого через 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 и пользуйтесь!
- Оригинал "Update content in AJAX with partialRender" [англ.]
Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
- Для начала вам потребуется скачать последний релиз FCKeditor. Разархивируйте скачанный файл и поместите его в папку fckeditor (которую предварительно ... "Как подключить FCKeditor"
- Я тут маленько проспал выход новой версии своего любимого фреймворка. И так, говорим здравствуй Yii 1.1.5!
next
Самое вкусное:
CTypedMap.
В профайлере теперь видно ... "Yii Framework 1.1.5"
- Эта статья устарела т.к. была написана для yii версии 1.0.х; Если вы используете более новую версию - у вас могут ... "Валидация формы средствами Yii"

[guest] RSol
Было сказано: Понедельник, 12 Октябрь 2009
А почему так:
CController::createUrl('helloWorld/UpdateAjax'),
я обычно использую
array('helloWorld/UpdateAjax'),
и все работает?

[adm] zolter
Было сказано: Понедельник, 12 Октябрь 2009
Дело в том что когда ты делаешь через createUrl, Yii сам формирует путь согласно правилу (если найдет) указанному в маршрутах твоего приложения.

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


