Всем здравствуйте и с наступающим Новым Годом всех
Собственно вопрос - подскажите с какой стороны подходить при создании подобных форм http://partner.ferio.ru/RequestMgt/RequestSend.php
Всем здравствуйте и с наступающим Новым Годом всех
Собственно вопрос - подскажите с какой стороны подходить при создании подобных форм http://partner.ferio.ru/RequestMgt/RequestSend.php
Со стороны получения списка зависимых селектов через ajax
Пример с двумя списками: http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown
http://stackoverflow.com/questions/16919734/dropdownlist-yii-3-or-more-models/16921537#16921537 c 3мя, немного кучерявый.
Что происходит:
Вешаете onchange на select.
Делаете ajax запрос.
В контроллере генерируете список опций, и выводите их.
В success аякса делаете как то так:
success:function(data){
$("my_2nd_drop").empty();
$("my_2nd_drop").append(data);
}
Получаете то что вам и нужно.
С наступающими
Спасибо, это уже давно переварено Там форма не совсем простая(для меня во всяком случае), там они мало того что зависимы, дык по сути на всех вкладках(табах) одна и та же форма(частями), вот и думаю как это все слепить до кучи
Спасибо, гляну, там просто вариантов компоновки море(в моем примере), это ж скока работы
P.S: насколько я понял данные отдавать лучше в json и хранить в отдельном файле на серве(хотя вроде как скоро json использовать не будет возможным в версии php 5.5 и выше его вроде как нет) ?
Работы много, но всегда можно упростить.
Вы видите что функционал делает почти тоже самое все время - складывайте все в 1 функцию.
Это ведь у вас форма, вот на onchange можно например передавать все параметры и в зависимости от них формировать то что нужно.
Правильно мыслите, если форма большая и сложная - передавайте json в ответе, а в success повесьте функцию обработчик, которая из json будет формировать опции и выводить их.
Что значит хранить в отдельном файле, и кто это с вами пошутил так?
Берите данные из php, делайте json_encode() или CJSON::encode() и передавайте в js.
P.S.
{
"date": 1387875417,
"news": 1,
"recomendation": 1
}
а вот это json?
Еще раз спасибо, пойду обдумывать план действий, главное не ошибиться
P.S: он вроде
Так, еще вопрос, кто нить может подсказать как добавить класс к option ? Т.е. через dropDownList сейчас генерится так:
<select style="width: 110px" name="Forms[auto_kpp]" id="Forms_auto_kpp">
<option value="empty">КПП</option>
<option value="Автомат">Автомат</option>
<option value="Вариатор">Вариатор</option>
<option value="Механика">Механика</option>
<option value="Типтроник">Типтроник</option>
</select>
А нужна возможность задавать каждому option свой class, т.е. так:
<select style="width: 110px" name="Forms[auto_kpp]" id="Forms_auto_kpp">
<option value="empty">КПП</option>
<option value="Автомат" class="Автомат">Автомат</option>
<option value="Вариатор" class="Вариатор">Вариатор</option>
<option value="Механика" class="Механика">Механика</option>
<option value="Типтроник" class="Типтроник">Типтроник</option>
</select>
Можно конечно на голом html, но некрасиво ведь
Никак, так что придётся делать некрасиво на голом html хотя не вижу ничего некрасивого. Вопрос в другом - зачем такие странные названия классов?
P.S. На самом деле можно: http://www.yiiframework.com/doc/api/1.1/CHtml#activeDropDownList-detail (см. options) но это вряд ли красивей, чем "голый html".
Нельзя option задать класс.
Нельзя ведь изменить стили опций стандартного селекта, а в теге можно задавать disabled, value и прочие характеристики.
Да и классы действительно странные, зачем они вам нужны в таком виде?
Если нужно применить стили - используйте js плагин. Я например пользуюсь chosen.
Странно, что там используются классы, логичнее было бы сделать data-* атрибуты.
Ну да, было бы более актуально, хотя если честно разницы особой не вижу, форму пришлось ручками писать
Подскажите пожалуйста кто-нибудь следующий момент. Сейчас у меня в контроллере такой вариант, если модель проходит валидацию, отдаю новую часть формы:
$valid=$model->validate();
if($valid){
$content[] = $this->renderPartial("/forms/_sparesform", array('model' => $model), true);
echo CJSON::encode(array('status'=>'success', 'content'=> $content));
Yii::app()->end();
}
Всего форма разбита на четыре части, модель общая(у каждой части формы свой экшн). Выводятся с помощью CJuiTabs(всего четыре вкладки(таба)). Вопрос, можно ли каким либо образом при успешной валидации не обновлять текущую вкладку(таб) как сейчас:
<?php echo CHtml::ajaxSubmitButton('',CHtml::normalizeUrl(array('/forms/SendAutoForm','render'=>true)),
array(
'dataType'=>'json',
'type'=>'post',
'success'=>'function(data) {
if(data.status=="success"){
$("#auto-form").html(data.content);
$("#auto-form")[0].reset();
}else{
$.each(data, function(key, val) {
$("#auto-form #"+key+"_em_").text(val);
$("#auto-form #"+key+"_em_").show();
});
}
}'
)); ?>
а перебрасывать на новую вкладку(таб) ?