我有静态资源的控制器,例如图像
class ResourceController extends Controller {
public function actionImage($fname) {
$file = Yii::app() -> params['baseFilesPath'] . $fname;
if (file_exists($file)) {
header("Content-Type: image/jpeg");
header("Accept-Ranges: bytes");
header("Content-Length: " . filesize($file));
// header("Content-Disposition: attachment; filename=" . $fname);
readfile($file);
}
}
我有一个这个控制器的URL映射:
urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'resources/<fname:\w+>' => 'resource/image',
'product/<name:\w+>/<id:\d+>' => 'catalog/product',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
Yii为此映射生成严格的网址:
/index.php/resources/bf81346e36131b5740bf96dc19b70ac0.jpeg
但是控制器没有打电话。
你能帮帮我吗?我认为我的正则表达式是错误的。答案 0 :(得分:2)
由于fname
参数中有一个点,而点不是'word' character(\w
),应该只是尝试以下规则:
'resources/<fname>' => 'resource/image',
http://www.yiiframework.com/doc/guide/1.1/fr/topics.url#using-named-parameters
如果省略ParamPattern,则表示参数应该 匹配斜杠/
以外的任何字符