Yii Framework Forum: как правильно организовать AJAX - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

как правильно организовать AJAX Rate Topic: -----

#1 User is offline   Alexandr Dorogikh 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 71
  • Joined: 29-September 09
  • Location:Ukraine, Bila Tserkva

Posted 08 October 2009 - 08:40 AM

У меня вопрос такого плана

У меня есть контроллеры, скажем

Base1Controller
Base2Controller

и в них есть ajaxAction

которые возвращают json формат

будет ли правильным
запихнуть функциональность этих экшенов скажем
в AjaxController
в акшены
base1Action
base2Action


Да и вообще кто как делает и как правильно?
0

#2 User is offline   Albert 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 09-September 09

Posted 09 October 2009 - 03:15 AM

хех.. у меня тоже есть AjaxController))) Это абстрактный класс, то есть не используется напрямик и вообще находится в компонентах. Он расширяет стандартный CController полезным функционалом, и наследуется всеми контроллерами, где необходима работа с аджаксом.
0

#3 User is offline   Alexandr Dorogikh 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 71
  • Joined: 29-September 09
  • Location:Ukraine, Bila Tserkva

Posted 09 October 2009 - 03:19 AM

А можно примерчик AjaxController'а
0

#4 User is offline   freezy 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 23
  • Joined: 12-August 09
  • Location:Russia, Arzamas

Posted 09 October 2009 - 03:23 AM

Я вот как делаю обычно:
  • Сначала сайт без ajax
  • Делаю js-файлы и подключаю там, где необходим ajax: в каждом файле функция, которая проставляет onclick, onchange, ...
  • В конце необходимых экшенов добавляю проверку Yii::app()->request->isAjaxRequest и, в зависимости от результата проверки, выдаю либо данные в json-формате, либо html


Пока все гладко :)

Забыл добавить: а вообще все зависит от конкретной ситуации
0

#5 User is offline   Albert 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 44
  • Joined: 09-September 09

Posted 09 October 2009 - 03:52 AM

abstract class AjaxController extends CController{
    
	protected function ajaxResp($param1 = true, $param2 = false)
	{
		if(is_bool($param1))	return CJSON::encode(array('status'=>$param1, 'msg'=>$param2));
		else			return CJSON::encode(array('status'=>true, 'msg'=>$param1));
	}
	
	protected function filters()
	{
		return array('ajaxOnly', 'checkToken');
	}
...
...

Основные функции. ajaxResp() выдает ответ сразу в нужном формате ['status', 'msg']. status=false ошибка
filters() по дефолту разрешает только аджакс запросы
плюс куча функций для работы с секьюрити токенами checkToken()getToken()makeToken()filterCheckToken()

Далее
class EditorController extends AjaxController
{
	public function actionRename()
	{
		
		$model=Albums::model()->findByPk($_POST['album_id']);
		if(!$model){
			echo $this->ajaxResp(false, 'Запись не существует'); return 0;
		}
		
		$model->name = $_POST['name'];
		if($model->save()){
			echo $this->ajaxResp(true);
		}else{
			echo $this->ajaxResp(false, $model->getErrorsList());
		}
		
	}
...
...

0

#6 User is offline   Zolter 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 377
  • Joined: 26-March 09

Posted 09 October 2009 - 04:44 AM

Я ajax экшины оставляю в тех контроллерах к которым они относятся. Так проще искать в принципе где надо менять код, да и вобще мне кажется красивее. Просто суфикс делаю после "_a" к примеру getAllUsers_a()
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users