我对Yii很新,所以这可能是一个愚蠢的问题。我必须在某处遗漏某些东西。 Plz帮助我。 我正在学习Yii时,我刚刚编写了一个简单的代码。 我有一个火花控制器,其动作看起来像这样:
public function actionDownload($name){
$filecontent=file_get_contents('images/spark/'.$name);
header("Content-Type: text/plain");
header("Content-disposition: attachment; filename=$name");
header("Pragma: no-cache");
echo $filecontent;
exit;
}
现在我在视图文件中启用了SEO友好URL和echo语句,以显示返回的下载文件名。 但是当我转到URL时 的 SITE_NAME / index.php的/火花/下载/ db5250efc9a9684ceaa25cacedef81cd.pdf 我收到错误400 - 您的请求无效。
Plz让我知道我在这里遗失了什么。
答案 0 :(得分:4)
Yii密切关注你传递给action
函数的params。您传递的任何参数都必须与$_GET
中的参数匹配。
因此,如果您通过了$name
,那么您需要确保$_GET['name']
可用。
请检查/config/main.php
中的网址管理员,确保您声明了GET var:
'spark/download/<name:[a-z0-9]+>' => 'site/download', // Setting up $_GET['name']
否则将您的函数更改为正确的参数变量:
public function actionDownload($anotherName){
}
答案 1 :(得分:1)
您是否正确创建了网址?
你应该做得最好Yii::app()->createUrl('/spark/download',array('name'=>$filename));
答案 2 :(得分:0)
确保您在请求中正确提供参数name
($name
)。
使用
SITE_NAME / index.php的/火花/下载/的名称强> /db5250efc9a9684ceaa25cacedef81cd.pdf
或
SITE_NAME / index.php的/火花/下载?的名称强> = db5250efc9a9684ceaa25cacedef81cd.pdf
而非 SITE_NAME / index.php / spark / download / db5250efc9a9684ceaa25cacedef81cd.pdf