我创建了一个自定义 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
,只需要正确的接口(interface)即可。
关于php - 伊2。应用自定义 URL 规则类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41873686/