createUrl() public method

Creates a URL according to the given route and parameters.
public createUrl ( UrlManager $manager, string $route, array $params ) : string | boolean
$manager UrlManager the URL manager
$route string the route. It should not have slashes at the beginning or the end.
$params array the parameters
return string | boolean the created URL, or `false` if this rule cannot be used for creating this URL.
コード例 #1
0
 /**
  * @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);
 }
コード例 #2
0
 /**
  * @inheritdoc
  */
 public function createUrl($manager, $route, $params)
 {
     if (!isset($params[$this->languageParam])) {
         $params[$this->languageParam] = $this->getLanguage();
     }
     return parent::createUrl($manager, $route, $params);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: UrlRule.php プロジェクト: stronglab/yii2-dashboard
 /**
  * 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);
 }
コード例 #5
0
ファイル: GroupUrlRule.php プロジェクト: xyxdasnjss/imshop
 /**
  * @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);
 }
コード例 #6
0
ファイル: UrlRuleTest.php プロジェクト: aivavic/yii2
 public function testCreateUrl()
 {
     $manager = new UrlManager(['cache' => null]);
     $suites = $this->getTestsForCreateUrl();
     foreach ($suites as $i => $suite) {
         list($name, $config, $tests) = $suite;
         $rule = new UrlRule($config);
         foreach ($tests as $j => $test) {
             list($route, $params, $expected) = $test;
             $url = $rule->createUrl($manager, $route, $params);
             $this->assertEquals($expected, $url, "Test#{$i}-{$j}: {$name}");
         }
     }
 }
コード例 #7
0
 public function createUrl($manager, $route, $params)
 {
     if ($route == $this->route && isset($params['id']) && ($model = Categories::findOne($params['id'])) && $model->alias) {
         unset($params['id']);
         //preg_match($this->pattern, \Yii::$app->request->getPathInfo(), $matches);
         //$matches = $this->substitutePlaceholderNames($matches);
         //var_dump($matches);
         if ($model->parent) {
             return 'category/' . $model->parent->alias . '/' . $model->alias . (!empty($params) ? '?' . http_build_query($params) : '');
         }
         return 'category/' . $model->alias . (!empty($params) ? '?' . http_build_query($params) : '');
     }
     return parent::createUrl($manager, $route, $params);
 }
コード例 #8
0
ファイル: WebUrlRule.php プロジェクト: weblement/yii2
 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);
 }
コード例 #9
0
ファイル: UrlRule.php プロジェクト: ivan-chkv/yii2-mozayka
 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);
 }
コード例 #10
0
 /**
  * @inheritdoc
  */
 public function createUrl($manager, $route, $params)
 {
     $params = $this->checkLanguageParams($params);
     return parent::createUrl($manager, $route, $params);
 }