2012-11-16 39 views
1

我有以下按鈕:將YII ajaxButton連接到控制器以執行服務器端功能?

<?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' 

這是否意味着這樣有一個網址張貼到我必須創建一個視圖,控制器和模型?沒有經過這樣的努力,沒有更簡單的方法嗎?

+0

其觀點有這個按鈕?哪個控制器呈現這個視圖?這個按鈕應該做些什麼(大致)?編輯:這個按鈕必須在視圖內,你有沒有想過它應該屬於哪個視圖? –

+0

查看=>這是在main.php(首頁)。控制器 - > sitecontroller。按鈕確實 - >它增加了數據庫中的一個字段。應該非常直截了當。一等獎是,如果我可以讓按鈕在控制器中執行公共功能? – coderama

+0

我開始試圖找出如何增加值。一旦我能做到這一點,更新前面的JavaScript應該很容易... – coderama

回答

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(); 
} 
+1

謝謝!你是一個傳奇人物.. – coderama