在yii中,如何将变量从一个动作传递到控制器的另一个动作?

在yii中,如何将变量从一个动作传递到控制器的另一个动作?,yii,Yii,这是我的行动 public function actionUpload() { $model=new Sop; if(isset($_FILES['files'])){ print_r($_POST['name']);exit; $tmp_name = $_FILES['files']['tmp_name'][0]; $filename = $_FILES['files']['name'][0]; $new_url =

这是我的行动

public function actionUpload()
    {
    $model=new Sop;
    if(isset($_FILES['files'])){
    print_r($_POST['name']);exit;
        $tmp_name = $_FILES['files']['tmp_name'][0];

    $filename = $_FILES['files']['name'][0];


        $new_url = Yii::app()->basePath."/docfile/".$filename;
        move_uploaded_file($tmp_name, $new_url);
        /*if(move_uploaded_file($tmp_name, $new_url)){
            //print_r($filename);exit;
            echo $filename;
        }*/
    }
    else "error";
}

现在,我想将$tmp\u name、$filename和$new\u url传递给此控制器中的另一个操作。

我不确定您试图实现什么,因为控制器中的操作旨在处理请求和生成响应。您似乎没有正确地使用

但是,如果您坚持使用控制器操作,则可以使用重定向和参数,如以下文档所示:

例如(从控制器内部):


请注意,这远非理想。我不确定您想要实现什么,但我建议使用一个来完成上传(?)作业,而不是将参数发送给完成上传的控制器操作。

您可以使用
$this->forward('action')
执行另一个操作,而无需重定向到该url:

$params = array(
    'tmp_name' => $tmp_name,
    'filename' => $filename,
    'new_url' => $new_url,
);
$action = $this->createUrl('controller/action', $params);
$this->forward($action);
另一个操作标题可能如下所示:

public function actionAction($tmp_name, $filename, $new_url)
public function actionnext($tmp_name , $filename , $new_url) 
{
  //your code goes here.
}

假设您要将$tmp_name、$filename和$new_url参数传递给同一控制器中名为“next”的操作,可以这样简单地完成, 在actionUpload()中,调用actionnext作为$this->actionnext($tmp\u name、$filename和$new\u url)

在控制器中,actionnext()的定义如下所示:

public function actionAction($tmp_name, $filename, $new_url)
public function actionnext($tmp_name , $filename , $new_url) 
{
  //your code goes here.
}

在actionnext函数定义中,“$tmp\u name、$filename、$new\u url”只是变量,因此您可以在此处使用任何名称。

添加到该函数中;您似乎正在使用Yii1而不是Yii2(consufing tags…?),因此您可以在此处查找文档您使用的是Yii2.0还是1.1?在2.0和1.1上有许多不同之处,我如何在另一个操作中接收这些变量?@MohibulHasanRana作为您操作的参数function@MohibulHasanRana我添加了一个示例,但也许您可以添加您想要使用的操作代码,以便我们可以给您提供更好的建议。