1

画像などの静的リソースのコントローラーがあります

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 は、このマッピングの正しい URL を生成します。

/index.php/resources/bf81346e36131b5740bf96dc19b70ac0.jpeg

しかし、コントローラーは呼び出されません。

手伝って頂けますか?私の正規表現が間違っていると思います。

4

1 に答える 1

2

パラメータには 1 つのドットがあり、ドット「単語」文字( ) ではないため、次のルールを試してみてください。fname\w

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

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

ParamPattern が省略されている場合、パラメータはスラッシュ / 以外の任意の文字と一致する必要があることを意味します

于 2013-04-24T09:21:29.207 に答える