yii crud如何添加按钮来触发模型功能

dev*_*ric 3 yii

如何在crud _form中为actionUpdate添加一个按钮?

所以我可以删除保存的文件,并上传一个新文件

我在模型中有这个功能

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

那么如何用这样的按钮触发呢?

<input type="button" value="delete image"/>
Run Code Online (Sandbox Code Playgroud)

boo*_*dev 6

MVC中,控制器通常负责来自用户的交互,因此用户不直接访问模型,而是通过控制器进行访问.控制器拦截用户操作并通过调用模型来完成工作.因此,即使可能,也最好不要直接调用模型函数.

现在,为了做你想做的事情,我们可以在控制器中创建一个函数(动作),然后调用模型的函数.

要在控制器中调用函数(动作),我们可以关联单击按钮时将调用的URL,这可以通过使用onclick事件来完成.我猜你不希望浏览器导航到新的URL,因此我们用ajax调用这个url.

示例,1)在控制器中:

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

2)在视图中使用按钮:而不是<input type="button" value="delete image"/>使用CHtml辅助类的ajaxButton.

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

小心传递权利$id.