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.
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