2013-04-24 3 views
1

У меня есть контроллер для статических ресурсов, например, изображенияпроблемы картографирования Url с использованием Yii

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 генерировать Rigth URLs для этого отображения:

/index.php/resources/bf81346e36131b5740bf96dc19b70ac0.jpeg 

Но контроллер не звонил.

Вы можете мне помочь? Я думаю, что мое регулярное выражение неверно.

ответ

2

Поскольку существует одна точка в вашем параметре fname и точка не 'word' character (\w), вы должны просто попробовать следующее правило:

'resources/<fname>' => 'resource/image', 

http://www.yiiframework.com/doc/guide/1.1/fr/topics.url#using-named-parameters

В случае, если параметр ParamPattern опущен, это означает, что параметр должен соответствовать любым символам, кроме косой черты/

Смежные вопросы