Yii2。应用自定义 URL 规则 class
Yii2. Apply Custom URL rule class
我创建了一个自定义 URL 规则并想在其中添加一些逻辑,但是 parseRequest
和 createUrl
方法没有执行。
<?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
?
正确的 UrlManager 示例配置是:
'rules' => [
['class' => 'MyUrlRule', 'pattern' => '...', 'route' => 'site/index', ...],
// ...
]
您需要将其包装在另一个数组中。
编辑:您不必像我之前发布的那样扩展 yii\web\UrlRule
而不是 yii\base\Object
,只需要适当的接口。
我创建了一个自定义 URL 规则并想在其中添加一些逻辑,但是 parseRequest
和 createUrl
方法没有执行。
<?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
?
正确的 UrlManager 示例配置是:
'rules' => [
['class' => 'MyUrlRule', 'pattern' => '...', 'route' => 'site/index', ...],
// ...
]
您需要将其包装在另一个数组中。
编辑:您不必像我之前发布的那样扩展 yii\web\UrlRule
而不是 yii\base\Object
,只需要适当的接口。