Код: Выделить всё
<?php
namespace backend\components;
use yii\web\UrlRuleInterface;
use yii\base\BaseObject;
use app\models\Page;
class PageManager extends BaseObject implements UrlRuleInterface
{
public function createUrl($manager, $route, $params)
{
if ($route === 'page/view' & isset($params['id'])) {
if (($page = Page::find()->where(['id' => $params['id']])->one()) == NULL ) {
return false;
}
//return $page->slug;
return 'view/'.$page->id;
}
return false;
}
public function parseRequest($manager, $request)
{
$pathInfo = $request->getPathInfo();
if (preg_match('%^([a-zA-Z0-9-]+)(/([a-zA-Z0-9-]+))?$%', $pathInfo, $matches)) {
if (count($matches) != 4) { // условие для выхода (Примечание 1)
return false;
}
if ($matches[1] != "page") { // условие для выхода (Примечание 1.1)
return false;
}
if (($page = Page::find()->where('slug =:slug', [':slug' => $matches[3]])->one()) == NULL) { //
// (Примечание 2)
return false;
}
return ['page/view', [ // (Примечание 3)
'page' => $page
]];
}
return false; //(Примечание 4)
}
}