| 
			
				|  | Cake-PHP.ru Форум программистов CakePHP
 (на сайт)
 
 |  
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| yuriyb Гость
 цитировать
 
 
 
 
 
 
 
 | 
			
				|  Добавлено: 29 Ноя 2008 12:27:41    Заголовок сообщения: AJAX & implementing dependent select boxes like CAKEPHP |     |  
				| 
 |  
				| Добрый день ! 
 я как то уже поднимал вопрос
 
 "как сделать c AJAX селект страна->регион->город"
 http://groups.google.com/group/cake-php-ru/browse_thread/thread/e28eb...
 
 и  была тут также тема
 
 "Умные SELECT'ы "малой кровью" -- реально? "
 
 http://groups.google.com/group/cake-php-ru/browse_thread/thread/8180a...
 
 также и  в инете  я нашел несколько  решений
 
 http://www.devmoz.com/blog/2007/04/04/cakephp-update-a-select-box-usi...
 http://www.palivoda.eu/2008/04/dependent-select-update-with-json-requ...
 http://j4vk.com/wordpress/2008/08/07/cakephp-dynamic-select-boxes-ajax/
 
 сам я пока сделал так  elements/geo
 
 $countries=$this->requestAction('geos/
 get_countries/');
 
 echo $form->input('Geo.country_id',
 array('options' => $countries ,
 'empty' => 'укажите страну',
 'selected' => $id ,
 'label' => 'Страна')
 );
 
 $options = array('url' => '/geos/get_regions/','update'
 =>'div_region_id',
 'with' => 'Form.Element.serialize(\'GeoCountryId\')',
 'loading' => '$(\'div_spinner\').style.display = \'block\';',
 'complete' => '$(\'div_spinner\').style.display = \'none\';');
 
 echo $ajax->observeField('GeoCountryId',$options);
 
 if ($id)
 {
 $regions=$this->requestAction('geos/get_regions/'.$id);
 
 }
 
 else if (!isset($regions))
 {
 $regions ='';
 
 }
 
 echo '<div id = "div_region_id">';
 echo $form->input('Geo.region_id',
 array(
 'options' => $regions,
 'empty' => 'укажите регион',
 'label' => 'Регион')
 );
 echo '</div>';
 
 if (!isset($cities)) $cities ='';
 echo '<div id = "div_city_id">';
 echo $form->input('Geo.city_id',
 array(
 'options' => $cities,
 'empty' => 'укажите город',
 'label' => 'Город')
 );
 echo '</div>';
 
 т к подобную конструкцию мне надо использовать много раз
 на разных страницах то я ищу болеее универсальное рещение
 
 мое решение уже хорошое
 сейчай достаточно для вызова одой строчки
 echo $this->Element('geo', array("id" => 3159));
 и можно также передавать параметры
 и кроме того я использую страндарт cakephp  $ajax->observeField
 вместо любимого в таких рещениях jQeury
 к недостаткам рещения я бы отнес вызов 3 раза $this->requestAction
 что негатавно играет на производительности
 
 есть ли пути улучшить это решение
 сделать это как  то в виде helpere или что то вроже того
 и более унививерсальное
 
 к примеру  с таким фунционалом
 
 e ($this->Geo( 3159,'city_id')) выводит селекты с уже выбранными
 страной /регион/город
 e ($this->Geo( schow=>array('country'))) выводит селектор только
 выбора страны
 
 и что бы при необходимости можно было прикрутить следущие
 dependent select boxes
 к примуру "Выбор улицы"
 а также управляемость при помощи JS
 если пользолователь сделал действие например
 выбор позиции с помощью googlemap
 что бы автоматом перестроися и селест
 
 есть какие то идеи как это можно слелать ?
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| Vlad 
 цитировать
 
 
 
 Зарегистрирован: 02 Ноя 2007 11:45:52
 Сообщения: 241
 
 
 | 
			
				|  Добавлено: 29 Ноя 2008 16:27:48    Заголовок сообщения: |   |  
				| 
 |  
				| Без запросов можно обойтись только в случае, если заранее генерировать элементы в файл. И включать в лейаут уже отрендереные списки городов/улиц/районов Или кешировать.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы можете начинать темы Вы можете отвечать на сообщения
 Вы можете редактировать свои сообщения
 Вы можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  
 Powered by phpBB © 2001, 2005 phpBB Group
 Русская поддержка phpBB
 
 
   |