[Resolvido] Executar Função Especifica No Controller

Boa tarde

Como fazer com que um form modal execute uma função dentro de um controller. Tenho uma função AddItem, mas ele sempre executa a função create.

Você deve setar qual a Action você deseja para seu formulário:


<?php 

   $form=$this->beginWidget('CActiveForm', array(

        'id'=>'form-id',

        'action' => Yii::app()->createUrl('/meuController/addItem'),  // << A url para seu metodo    

   ));

?>

Lembrando que seu método em seu Controller devera se chamar actionAddItem

Bom dia,

Se você estiver usando um botão apenas para chamar a Function no seu Controller, fazer algum processamento e devolver informações para sua página, sem dar Submit no Form… você pode usar o Ajax.





$this->widget('bootstrap.widgets.TbButton', array(

			'icon' => 'icon-plus',

			'size' =>'small',

			'type' => 'warning',

			'buttonType' => 'ajaxButton',

			'url' => $this->createUrl('addPgto'),

			'htmlOptions'=>array('id'=>'btn_addparcela', 'title'=>'Inserir Parcela',),

			'ajaxOptions'=>array('type'=>'POST',

    					     'success'=>'allFinePgtos', 

 					     'url' => 'js:$(this).attr("href")',

						),

		));




Trecho do código Javascript da allFinePgtos:




function allFinePgtos(data) {

	

    // Atualizando o conteúdo da DIV 

    $('#div_pgtos').html(data);

}



Dentro desta div, você pode colocar sua tabela e/ou outro componente que necessitar de atualização do Html.

No exemplo acima estou usando um componente do Bootstrap. Mas caso você esteja usando o componente do Yii, segue um exemplo:

Mas existem outras formas de executar Ajax.

Aí lá no seu controller, você precisa do render_partial para atualizar sua página novamente. Nos links abaixo, tem exemplos de como deverá ficar sua função no controller.

http://yiibook.blogspot.com.br/2012/05/chtml-ajax-button-in-yii.html

http://www.yiiframework.com/wiki/49/update-content-in-ajax-with-renderpartial/

Não esqueça de que qualquer nova Function, precisa ter "autorização" no seu controller:




	public function accessRules()

	{

		return array(

			array('allow',  // allow all users to perform 'index' and 'view' actions

				'actions'=>array('index','view', ... SUAS NOVAS FUNÇÕES... ),

				'users'=>array('*'),

			),



Obrigado