/
Yii1LikeUrlRule.php
36 lines (28 loc) · 960 Bytes
/
Yii1LikeUrlRule.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
namespace app\components;
use yii\web\UrlRuleInterface;
use yii\base\Object;
class Yii1LikeUrlRule extends Object implements UrlRuleInterface {
public function createUrl($manager, $route, $params) {
$url = $route;
foreach ($params as $name => $value) {
$url .= "/$name/$value";
}
return $url;
}
public function parseRequest($manager, $request) {
$params = [];
$pathInfo = $request->getPathInfo();
$segments = explode("/", $pathInfo);
if (count($segments) < 3)
return false;
$controller = array_shift($segments);
$action = array_shift($segments);
while (count($segments)) {
$paramName = array_shift($segments);
$paramValue = array_shift($segments);
$params[$paramName] = $paramValue;
}
return ["$controller/$action", $params];
}
}