2017-01-26 9 views
1

私はカスタムURLルールを作成しましたが、そこにいくつかのロジックを入れたいが、parseRequestcreateUrlメソッドは実行されていません。Yii2。カスタムURLルールクラスを適用する

<?php 
namespace app\components; 

use yii\base\Object; 
use yii\web\UrlRuleInterface; 

/** 
* {@inheritDoc} 
*/ 
class CustomUrlRule extends Object implements UrlRuleInterface 
{ 
    /** 
    * {@inheritDoc} 
    */ 
    public function createUrl($manager, $route, $params) 
    { 
     echo __METHOD__; 
     die(); 
    } 

    /** 
    * {@inheritDoc} 
    * @throws \yii\base\InvalidConfigException 
    */ 
    public function parseRequest($manager, $request) 
    { 
     echo __METHOD__; 
     die(); 
    } 
} 

そしてUrlManager$rules

'enablePrettyUrl'  => true, 
    'showScriptName'  => false, 
    'enableStrictParsing' => true, 
    'rules'    => [ 
     'class' => 'app\components\CustomUrlRule', 
    //other rules... 

]

でそれを書くしかし、コードが実行されていません。私はまだ私のアプリのページにすることができます。役に立たなかったCustomUrlRuleを適用するには?

答えて

1

適切UrlManagerの設定例は次のとおりです。

'rules' => [ 
    ['class' => 'MyUrlRule', 'pattern' => '...', 'route' => 'site/index', ...], 
    // ... 
] 

あなたが別の配列でこれをラップする必要があります。

編集:前に投稿したとおりyii\base\Objectではなくyii\web\UrlRuleを拡張する必要はなく、適切なインターフェイスが必要です。

+0

[docs](http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html#creating-rules)にエラーがありますか? –

+0

申し訳ありませんが、私の悪い、ちょうどインターフェイスが必要です。 – Bizley

+0

ありがとうございます。 4分で私は答えを受け入れる:) –

関連する問題