2012-04-22 59 views
3

如何在crud _form for actionUpdate中添加一個按鈕?yii crud如何添加一個按鈕來觸發模型功能

這樣我就可以刪除保存的文件,並上傳一個新

我有這個功能模型

public function deleteImage() 
    { 
     unlink(Yii::app()->basePath.'/../uploads/'.$this->image); 
    } 

所以如何與這樣的按鈕觸發這個?

<input type="button" value="delete image"/> 

回答

6

MVC,控制器通常負責相互作用的來自用戶的,因此用戶不直接訪問模型,但它確實通過控制器。控制器攔截用戶操作並通過調用模型來完成工作。因此,最好不要直接調用模型函數,儘管這是可能的。

現在,要做你想做的事情,我們可以在controller中創建一個函數(action),然後調用模型的函數。

要在控制器中調用一個函數(動作),我們可以關聯一個將在點擊按鈕時調用的url,這可以通過使用onclick event來完成。我猜你不希望瀏覽器導航到一個新的url,因此我們用ajax調用這個url。

實施例,1)在控制器:

public function actionMyaction($id){ 
    $sampleMod=SampleModel::model()->findByPk($id); 
    $sampleMod->deleteImage(); 
    Yii::app()->end(); 
} 

2)在考慮到與按鈕:代替<input type="button" value="delete image"/>使用CHtml helper class's ajaxButton

echo CHtml::ajaxButton('Delete Image',Yii::app()->createUrl('controllername/actionname',array('id'=>$id))); 

請謹慎傳遞正確的$id

+0

還記得只用POST方法刪除東西,你可以看到[這個答案](http://stackoverflow.com/a/12049426/720508)非AJAX請求。對於ajax請求,只需添加'type'=>'POST''的ajax選項,詳細信息可以在答案中給出的文檔鏈接中找到。 – 2012-08-23 04:57:41