使用Yii的URL映射问题

时间:2013-04-24 08:57:52

标签: url yii mapping

我有静态资源的控制器,例如图像

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

但是控制器没有打电话。

你能帮帮我吗?我认为我的正则表达式是错误的。

1 个答案:

答案 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,则表示参数应该   匹配斜杠/

以外的任何字符