Yii Framework Forum: CHtml::ajaxSubmitButton - Yii Framework Forum

Jump to content

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

CHtml::ajaxSubmitButton обновление кнопки на странице Rate Topic: -----

#1 User is offline   Ninja 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 18-September 09

Posted 18 September 2009 - 01:08 PM

Ситуация такая:

Имеем стандартную сгенерированную с помощью yiic форму, которую подключаем к нужной страничке:

<div id="needForm">
<?
    $p = Yii::app()->createController('need');
    $p[0]->actionCreate();   
?>
</div>

От стандартности форму отличает только то, что сабмитить её нужно с помощью ajax и выдавать результат на то же место, где она была.

Добавляем туда кнопку
echo CHtml::ajaxSubmitButton('Submit', '/need/create', array(
    'type' => 'POST',
    'update' => '#needForm',
),
array(
   'type' => 'submit'
));


При первом нажатии всё хорошо. Проходит запрос, ответ пишется куда нам надо.
Но при втором нажатии кнопка больше не обрабатывается жава-скриптом и форма сабмитится обычным образом отправляя нас на страничку /need/create .

При создании страницы кнопка именуется id="yt2" и на неё вешается скрипт:
jQuery('#yt2').click(function(){ ... });


При обновлении формы кнопка уже имеет id="yt1" и собственно говоря перестаёт работать.


Пока писал пост почти придумал решение - расширить html options:
array(
   'type' => 'submit',
   'id' => 'myButton',
   'name' => 'myButton'
));


Кнопка в обоих случаях уже имеет одно и то же имя и id, но со второй попытка по-прежнему не срабатывает ajax.
0

#2 User is offline   Ninja 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 18-September 09

Posted 18 September 2009 - 01:23 PM

Как вариант решил проблему уже таким образом:
после
echo CHtml::ajaxSubmitButton('Submit', '/need/create', array(
    'type' => 'POST',
    'update' => '#needForm',
),
   array(
   'type' => 'submit',
   'id' => 'myButton',
   'name' => 'myButton'
));

добавил
<script type="text/javascript">

/*<![CDATA[*/
jQuery(document).ready(function() {
jQuery('#myButton').click(function(){ //скопировал то что было сгенерировано автоматически });
});
/*]]>*/
</script>


Но до верха изящества такому варианту немного далековато.

Подскажет ли уважаемое коммьюнити более интересные идеи? :)
0

#3 User is offline   Ninja 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 18-September 09

Posted 20 September 2009 - 05:35 AM

В файле CClientScript.php не особо понял принцип работы функции
	protected function recordCachingAction($context,$method,$params)
	{
            if(($controller=Yii::app()->getController())!==null){
			$controller->recordCachingAction($context,$method,$params);
            }
	}

По какому принципу она работает?

Пока расширил её так:

	protected function recordCachingAction($context,$method,$params)
	{
            if(Yii::app()->request->isAjaxRequest){
            echo '<script type="text/javascript">/*<![CDATA[*/
                        jQuery(document).ready(function() {
                            '.$params[1].'
                        });
                    /*]]>*/</script>';
            }
            elseif(($controller=Yii::app()->getController())!==null){
			$controller->recordCachingAction($context,$method,$params);
            }
	}

Но должно быть и более элегантное решение. :(
0

#4 User is offline   Ninja 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 18-September 09

Posted 20 September 2009 - 01:14 PM

В общем нашлось решение.

$this->renderPartial('create',array('model'=>$model),false,true);


Установить четвёртый параметр в true, для того чтоб сгенерировался скрипт.

Пообщался сам с собой называется :)
2

#5 User is offline   WallTearer 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 05-November 10
  • Location:Kiev, Troeschina

Posted 26 November 2010 - 01:13 PM

"Синку, хай тебе Бог благословить))))))"

Дружище, риальне спасибо, два часа ипал мозги. Так что твои посты не потерялись даром ;)
0

#6 User is offline   greeschenko 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 19-November 12

Posted 24 March 2013 - 11:22 AM

большое спасибо :) а то решал подобные проблемы адскими костылями
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