Подскажите, как в контроллере Yii проверить какая Ajax-submit кнопка была нажата на форме, походу значение атрибута "name" этой кнопки не отсылается =((
Подскажите, как в контроллере Yii проверить какая Ajax-submit кнопка была нажата на форме, походу значение атрибута "name" этой кнопки не отсылается =((
Код в студию. (код формы)
kod kotorii napisan vo freimworke na PHP ili uze sgenerirovannii kone4nii HTML-kod ?
Вот код:
<?php echo CHtml::form();
echo CHtml::label(‘Текст’, ‘input’);
echo CHtml::textArea(‘input’, $input);
echo CHtml::label(‘Результат’, ‘output’);
echo CHtml::textArea(‘output’, $output);
echo CHtml::ajaxSubmitButton(‘Обработать’, ‘’, array(
'type' => 'POST',
'update' => '#output',
),
array(
'name' => 'xxx',
'type' => 'submit'
));
echo CHtml::endForm();?>
input и output идут через POST, а вот имя кнопки на которую нажали (xxx) - нет. Дело в том что сгенерированный на этой основе яваскрипт код производит сериализацию формы, но кнопки типа submit видимо не сериализуются…
Остается единственное решение - другой кнопке назначать другой action url, тогда все будет норм
Нда… с таким дела не имел (пока ) но отсылают к http://code.google.com/p/yii/issues/detail?id=38
Может что дельное.
можно просто передать какой нужно параметр в пост запросе, нужно добавить в ajaxOptions что-то типа
'data' => '{buttonName : 'mega_button_1'}
Если я пишу типа ‘data’ => ‘knopka=pizdata’, то тогда уже не идут данные с формы, а идут только указанные в ‘data’ данные
Сделайте в форме скрытое поле:
CHtml::hiddenField('knopka','pizdata');
Странное название кнопки
Нет, так не получится. У меня на ОДНОЙ форме может быть ДВЕ кнопки
Можно с разных кнопок посылать на разные URL.
я это уже писал:
"Остается единственное решение - другой кнопке назначать другой action url, тогда все будет норм "
Просто хотелось бы узнать, можно ли какнибудь проверить инфу какая кнопка была нажата, ведь в случае если JS будет отключен тут неудобства возникнут если указывать разные урлы…
что мешает написать
'data' => 'js:jQuery(this).parents("form").serialize()+"&knopka=pizdata"'
?
horoshaia idea, tolko mne kazalos 4to eto budet vospriniato kak stroka i etot kod serializacii ne vipolnitsia. no proveriu.
spasibo bolshoe. Teper rabotaet tak kak ia xotel. Plizz skazhi gde ti eto v manuale nashel?
на здоровье, в мануале нет, смотрел код CHtml.
в итоге все портило это место в CJavaScript::encode() которое используется в CHtml::ajax() для генераций опций
if(is_string($value))
{
if(strpos($value,'js:')===0)
return substr($value,3);
else
return "'".self::quote($value)."'";
}