Страница 1 из 1

UrlManager. createUrl не видит параметр и срабатывает только 1 раз

Добавлено: 2015.06.12, 09:03
YiiManDev
Суть проблемы в том что я создал свой класс для создания ЧПУ. Но работает странно.
Во первых обрабатывает только 1ую ссылку.
Во вторых не видит $params['slug'] хотя он есть.
Пример ссылки которую я использую <a class="thumbnail" href="<?=Url::to(['/guide/page/view','slug'=>$one['slug']])?>">.

Код: Выделить всё

<?php
return [
    'class'=>'yii\web\UrlManager',
    'enablePrettyUrl'=>true,
    'showScriptName'=>false,
    'rules'=> [
        ['class' => 'common\components\urlRules\GuideUrlRule'],
    ]
];

Код: Выделить всё

<?php
namespace common\components\urlRules;
use yii\web\UrlRuleInterface;
use yii\base\Object;

class GuideUrlRule extends Object implements UrlRuleInterface
{
    public function createUrl($manager, $route, $params)
    {


        // Страница

        if ($route === 'guide/bird/view') {

            echo '"></a></div><pre>';
            //var_dump($manager);
            var_dump($params);
            var_dump($route);
            echo '</pre>';
            //die();


            if(isset($params['slug'])){
                return 'guide/'.$params['slug'];
            }
        }


        return false;  // this rule does not apply
    }

    public function parseRequest($manager, $request)
    {
        return false;  // this rule does not apply
    }
}

Re: UrlManager. createUrl не видит параметр и срабатывает только 1 раз

Добавлено: 2015.06.12, 10:10
astronin
дебажте
правильно все сделали как написано в документации?
а вообще то что вы хотите можно сделать и без создания отдельного класса

Re: UrlManager. createUrl не видит параметр и срабатывает только 1 раз

Добавлено: 2015.06.16, 07:19
YiiManDev
Странно но когда я добавил следующие правила все заработало:
Хотя параметр id я не использую, только slug.

'page/<slug>' => 'guide/page/view',
'page/<id>' => 'guide/page/view',