从同一控制器的一个动作调用另一个动作

use*_*138 4 php controller yii

我是 YII 的新手。如何从同一控制器的另一个动作调用一个动作。假设我在操作 A。我需要使用两个参数调用操作 B。我的控制器名称是主控制器。我将如何执行此操作。请告诉我一个解决方案。提前致谢。

我的控制器:

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
        ));
    }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*iew 6

您可以简单地直接调用该函数,或者,

$this->actionMyCustomAction(); exit;
Run Code Online (Sandbox Code Playgroud)

您可以执行重定向到操作:

$this->redirect('anotherControllerName/myCustomAction');
Run Code Online (Sandbox Code Playgroud)

或者如果您在同一个控制器中:

$this->redirect('myCustomAction');
Run Code Online (Sandbox Code Playgroud)

更新

您错误地传递了变量:

$this->actionStore_action(array('action'=>'search', 'data_id'=>$cust_id));
Run Code Online (Sandbox Code Playgroud)

它应该是两个单独的变量:

$this->actionStore_action('search', $cust_id);
Run Code Online (Sandbox Code Playgroud)

这与 Yii 无关。这只是基本的函数调用。