将YII ajaxButton连接到控制器以执行服务器端功能?

时间:2012-11-16 12:16:49

标签: yii

我有以下按钮:

<?php $this->widget('bootstrap.widgets.TbButton', array(
  'label'=>'myLabel',
  'buttonType'=>'ajaxButton', 
  'url'=>'someUrl', 
  'type'=>'primary', // null, 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
  'size'=>'small', // null, 'large', 'small' or 'mini'
  'ajaxOptions'=>array(
      'type' => 'POST',
      'beforeSend' => '
        function( request ) {
          //alert(request);
        }'
      ,
      'success' => 'function( data ) {
          //alert(data);
        }'
      ,
      'data' => array( 
        'actionName' => "INCREMENT"
      )
  ),
)); ?>

所以,棘手的部分是,如何将此按钮连接到实际的后端代码?我认为这是通过发布到URL来完成的。在我的情况下,我有一个URL设置为:

'url'=>'someUrl'

这是否意味着我必须创建一个视图,控制器和模型,以便有一个URL发布到?没有经过这种努力,是不是有更简单的方法?

1 个答案:

答案 0 :(得分:1)

您不一定需要新视图。但是您需要一个捕获此请求的操作。

在Yii中,每个动作都有一个引用它的唯一URL,并且有一些函数可以为我们生成这样的URL namely createUrl。还有createUrl的其他版本,此处的版本来自CController

所以你要将你的url属性修改为:

'url'=>$this->createUrl('controller-name/action-name')

然后在您的控制器中添加操作:

public function actionActionname(){
    // do your server-side stuff
    // maybe also return some message back to client-side view
    if(success)
        echo "Y";
    else echo "N";
    Yii::app()->end();
}