public function parseRequest($manager, $request) { $result = parent::parseRequest($manager, $request); if (isset($result[1]) && $result[1]['route']) { $route = $result[1]['route']; $page = Page::getDb()->cache(function () use($route) { return Page::find()->where(['route' => $route])->one(); }); if ($page) { return [$this->route, ['route' => $route]]; } } return false; }
public function actionIndex() { echo "*************************************************"; $rule = new UrlRule(['pattern' => 'debug/<controller:[\\w\\-]+>/<action:[\\w\\-]+>/<id:\\d+>', 'route' => 'debug/<controller>/<action>', 'defaults' => ['id' => 10, 'action' => 'method']]); $rule->createUrl(Yii::$app->urlManager, 'debug/test/index', []); // $urlManager = Yii::$app->urlManager; // var_dump($urlManager->rules); }
/** * @param \yii\web\UrlManager $manager * @param string $route * @param array $params * @return bool|string */ public function createUrl($manager, $route, $params) { if (!isset($params[$this->languageParam]) || !$params[$this->languageParam]) { $params[$this->languageParam] = I18N::getCurrentLanguageSlug(); } return parent::createUrl($manager, $route, $params); }
/** * @inheritdoc */ public function createUrl($manager, $route, $params) { if (!isset($params[$this->languageParam])) { $params[$this->languageParam] = $this->getLanguage(); } return parent::createUrl($manager, $route, $params); }
/** * @inheritdoc */ public function parseRequest($manager, $request) { if ($result = parent::parseRequest($manager, $request)) { $this->redirectUrl = $this->redirectUrl ?: \Yii::$app->homeUrl; \Yii::$app->response->redirect($this->redirectUrl) && \Yii::$app->end(); } return $result; }
/** * Replace dashboard routes in url * * @param object $manager * @param string $route * @param array $params * @return bool */ public function createUrl($manager, $route, $params) { $customRoute = $this->prepareRoute($route); if (Yii::$app->getModule($this->dashboardId)->config->isDashboardRoute($customRoute) && Yii::$app->getModule($this->dashboardId)->config->isDashboardCall()) { $extRoute = Yii::$app->getModule($this->dashboardId)->config->getRoute($customRoute); return parent::createUrl($manager, $this->dashboardId . '/default/index', array_merge($params, $this->paramzRoute($extRoute))); } return parent::createUrl($manager, $route, $params); }
/** * Redirects to destination, if current request matched. * @inheritdoc */ public function parseRequest($manager, $request) { if ($parse = parent::parseRequest($manager, $request)) { list($route, $params) = $parse; $rule = array_merge([$route], $params); \Yii::$app->response->redirect($rule, $this->statusCode)->send(); \Yii::$app->end(); } return false; }
/** * @inheritdoc */ public function parseRequest($manager, $request) { // return the custom route $parts = explode("/", $request->pathInfo); if (!isset($parts[0]) || !Yii::$app->hasModule($parts[0]) || $parts[0] === 'cms') { return false; } // add trace info Yii::info('LUYA-CMS RouteBehaviorUrlRule is parsing the Request for path info \'' . $request->pathInfo . '\'', __METHOD__); return parent::parseRequest($manager, $request); }
/** * @inheritdoc */ public function createUrl($manager, $route, $params) { $defaultRoute = $this->route; foreach ($this->resolvers as $resolver) { $this->route = $resolver->getRoute(); if ($url = parent::createUrl($manager, $route, $params)) { return $url; } } $this->route = $defaultRoute; return parent::createUrl($manager, $route, $params); }
/** * Parse request * * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * * @return array|bool */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); $url = preg_replace('#/$#', '', $pathInfo); $page = (new CmsModel())->findPage($url); if (!empty($page)) { $params['pageAlias'] = $url; $params['pageId'] = $page->id; return [$this->route, $params]; } return parent::parseRequest($manager, $request); }
public function testParseRequest() { $manager = new UrlManager(['cache' => null]); $request = new Request(['hostInfo' => 'http://en.example.com']); $suites = $this->getTestsForParseRequest(); foreach ($suites as $i => $suite) { list($name, $config, $tests) = $suite; $rule = new UrlRule($config); foreach ($tests as $j => $test) { $request->pathInfo = $test[0]; $route = $test[1]; $params = isset($test[2]) ? $test[2] : []; $result = $rule->parseRequest($manager, $request); if ($route === false) { $this->assertFalse($result, "Test#{$i}-{$j}: {$name}"); } else { $this->assertEquals([$route, $params], $result, "Test#{$i}-{$j}: {$name}"); } } } }
/** * Parse request * * @param \yii\web\UrlManager $manager * @param \yii\web\Request $request * * @return boolean */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); // get path without '/' in end $url = preg_replace("#/\$#", "", $pathInfo); // find page by url in db $page = (new CmsModel())->findPage($url); // redirect to page if (!is_null($page)) { $params['pageAlias'] = $url; $params['pageId'] = $page->id; return [$this->route, $params]; } return parent::parseRequest($manager, $request); }
/** * @inheritdoc */ public function parseRequest($manager, $request) { if (!($result = parent::parseRequest($manager, $request))) { return false; } if ($this->enforceSeo) { Item::getCurrentPage($request->pathInfo); // sets seo meta tags } $manager->rules = array_filter($manager->rules, function ($rule) { return !$rule instanceof $this; }); if (!($result2 = $manager->parseRequest($request))) { return $result; } return \Yii::$app->createController($result2[0]) ? $result2 : $result; }
public function createUrl($manager, $route, $params) { if (isset($params[$this->paramName]) && !is_array($params[$this->paramName])) { $params[$this->paramName] = $this->urlDecode($params[$this->paramName]); foreach ($params[$this->paramName] as $key => &$value) { $value = Json::decode($value); } } foreach ($params as $key => $param) { if (in_array($key, $this->autoEncodeParams) && !is_null($param)) { $params[$this->paramName][$key] = $param; ArrayHelper::remove($params, $key); } } if (isset($params[$this->paramName]) && is_array($params[$this->paramName])) { foreach ($params[$this->paramName] as $key => &$value) { $value = Json::encode($value); } $params[$this->paramName] = $this->urlEncode($params[$this->paramName]); } return parent::createUrl($manager, $route, $params); }
public function createUrl($manager, $route, $params) { $request = Yii::$app->getRequest(); if (!array_key_exists('modelId', $params)) { $modelId = $request->getQueryParam('modelId'); if ($modelId) { $params['modelId'] = $modelId; } } if (strncmp($route, 'mozayka/crud/', 13) == 0) { $controller = Yii::$app->controller; if ($controller->id == 'crud') { if ($controller->action->id == 'list') { if ($route != 'mozayka/crud/list') { $params['uniqId'] = uniqid(); } } else { $uniqId = $request->getQueryParam('uniqId'); if ($uniqId) { $session = Yii::$app->getSession(); if (!$session->has($uniqId)) { $session->set($uniqId, $request->getReferrer()); } if ($route != 'mozayka/crud/list') { $params['uniqId'] = $uniqId; } else { $referrer = $session->get($uniqId); if ($referrer) { return $referrer; } } } } } } return parent::createUrl($manager, $route, $params); }
public function parseRequest($manager, $request) { if (trim($request->getPathInfo(), '/') == $this->route && $request->get('id') && Categories::findOne($request->get('id'))) { header("Location:" . \Yii::$app->urlManager->createUrl([$this->route, 'id' => $request->get('id')]), true, 301); exit; } preg_match($this->pattern, \Yii::$app->request->getPathInfo(), $matches); $matches = $this->substitutePlaceholderNames($matches); $root = explode('/', trim($request->getPathInfo(), '/')); if (!isset($matches['parent'], $matches['alias']) && isset($root[1])) { $matches['alias'] = $root[1]; } if (!isset($matches['alias'])) { return parent::parseRequest($manager, $request); } $model = Categories::findOne(['alias' => $matches['alias']]); if (!$model) { return parent::parseRequest($manager, $request); } if (isset($matches['parent']) && !Categories::findOne(['alias' => $matches['parent']])) { throw new NotFoundHttpException('Страница не найдена'); } return [$this->route, ['id' => $model->id]]; }
public function init() { $this->addLanguagePrefixToPattern(); parent::init(); }
/** * @inheritdoc */ public function createUrl($manager, $route, $params) { $params = $this->checkLanguageParams($params); return parent::createUrl($manager, $route, $params); }