Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

AJAX & implementing dependent select boxes like CAKEPHP

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Заголовок сообщения: Ответить с цитатой

Без запросов можно обойтись только в случае, если заранее генерировать элементы в файл. И включать в лейаут уже отрендереные списки городов/улиц/районов
Или кешировать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru