这是我的行动
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_name,$ filename和$ new_url传递给此控制器中的另一个操作。
答案 0 :(得分:1)
由于控制器内的操作旨在处理请求和生成响应,因此我不确定您要实现的目标。您好像没有正确使用Controller。
如果您坚持使用控制器操作,则可以使用带有参数的重定向,如以下文档中所示:http://www.yiiframework.com/doc-2.0/yii-web-controller.html#redirect()-detail
一个例子可能是(来自控制器内部):
// /index.php?r=site/destination&tmp_name=$tmp_name&new_url=$new_url&filename=$filename
$this->redirect([
'site/destination',
'tmp_name' => $tmp_name,
'new_url' => $new_url,
'filename' => $filename,
]);
请注意,这远非理想。我不确定您要实现的目标,但我建议使用Component完成上传(?)作业,而不是将参数发送到完成它的控制器操作。
答案 1 :(得分:0)
假设您要将$ tmp_name,$ filename和$ new_url参数传递给名为" next"在同一个控制器中,它可以像这样完成, 在你的actionUpload()调用操作中接下来是$ this-> actionnext($ tmp_name,$ filename和$ new_url)。
public function actionUpload()
{
//code for actionupload()
$this->actionnext($tmp_name , $filename , $new_url); //call to next action.
}
在控制器中,actionnext()的定义应如下所示:
public function actionnext($tmp_name , $filename , $new_url)
{
//your code goes here.
}
并在actionnext函数defination" $ tmp_name,$ filename,$ new_url"只是变量,所以你可以在这里使用任何名称。