我是YII的新手。如何从同一控制器的另一个动作调用动作。 假设我在行动A.我需要用两个参数调用动作B.我的控制器名称是Master Controller。我将如何执行此操作。请说我一个解决方案。提前谢谢。
我的控制器:
class NimsoftController extends Controller
{
public function actionStore_action($action,$data_id)
{
$model= new NimsoftUserLoginAction;
$model->user_id=Yii::app()->user->id;
$model->action=$action;//"Deleted";
$model->affected_data_id=$data_id;//"22";
$model->save();
}
public function actionSearch($id)
{
$cust_id = $id;
$criteria = new CDbCriteria();
$criteria->condition = "host_customer_id = '$cust_id'";
$details = NimsoftHost::model()->find($criteria);
$criteria2 = new CDbCriteria();
$criteria2->condition = "cust_id= '$details->host_customer_id'";
$name = MasterCustomers::model()->find($criteria2);
$dataProvider = new CActiveDataProvider('NimsoftHost', array(
'criteria' => $criteria,
'pagination'=>array('pageSize'=>40)
));
$model = new NimsoftHost();
$this->actionStore_action(array('action'=>'search', 'data_id'=>$cust_id));
$this->render('index',array(
'dataProvider' => $dataProvider,
'details' => $details,
'name' => $name->cust_name,
'model' => $model
));
}
}
答案 0 :(得分:4)
您可以直接调用该函数,或者
$this->actionMyCustomAction(); exit;
您可以执行重定向操作:
$this->redirect('anotherControllerName/myCustomAction');
或者如果你在同一个控制器中,那就是这个:
$this->redirect('myCustomAction');
<强>更新强>:
你错误地传递了变量:
$this->actionStore_action(array('action'=>'search', 'data_id'=>$cust_id));
它应该是两个独立的变量:
$this->actionStore_action('search', $cust_id);
这与Yii没什么关系。这是唯一的基本功能调用。
答案 1 :(得分:1)
$this->forward('site/contact');
如果转发,您的网址不会更改,您也无法在此处发送额外参数。
如果您想发送额外参数,请使用重定向。
$this->redirect(Yii::app()->createUrl('site/contact', array('id' => '22')));
希望这会对你有帮助..
答案 2 :(得分:0)
你也可以这样做: -
现在你想在动作Name2中调用动作Name1。
public function actionName1($param1,$param2) {
//your code...
}
public function actionName2() {
$this->redirect(array('name1','param1'=>'param1','param2'=>'param2'));
}
答案 3 :(得分:0)
如果转发,您的网址不会更改,您也无法在此处发送额外参数。
$this->redirect('contact');