URL

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Закрыто
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

URL

Сообщение Dirfak »

Приветствую всех!
Решил сделать частично модульную систему (admin, user, feedback и возможно еще что).
В url rules вот что прописано:

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

'<action:(feedback)>' => 'feedback/default/index',
'<action:(login|logout|signup|email-confirm|reset-password-request|reset-password)>' => 'user/default/<action>',
 '<action:(profile|update|change-password)>' => 'user/profile/<action>',
В шаблоне:

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

    echo Nav::widget([
        'options' => ['class' => 'navbar-nav navbar-right'],
        'items' => array_filter([
            ['label' => 'Home', 'url' => ['']],
            ['label' => 'Feedback', 'url' => ['feedback']],
            Yii::$app->user->isGuest ?
                ['label' => 'Sign Up', 'url' => ['signup']] :
                false,
            !Yii::$app->user->isGuest ?
                ['label' => 'Profile', 'url' => ['profile']] :
                false,
            Yii::$app->user->isGuest ?
                ['label' => 'Login', 'url' => ['login']] :
                ['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
                    'url' => ['logout'],
                    'linkOptions' => ['data-method' => 'post']],
        ]),
    ]);
В результате вот что получается у меня:
На главной странице ссылки выглядят нормально, т.е. site/lang/feedback, site/lang/signup и т.д., но если я перейду на feedback, то ссылки портятся, к примеру: site/lang/feedback/default/feedback/ или site/lang/feedback/default/signup/

Я хочу чтобы везде были нормальные ссылки типа site/lang/feedback, site/lang/signup, как этого добиться? (и вообще как сделать нормальные ссылки из модуля? в плане user/default/profile -> user/profile или вообще /profile??)

Имеется кастомный urlManager, и вот кроме как забить туда жесткую проверку урла (т.е. забить массив нужных url) я решения не вижу (а это ведь костыль...или нет?), может кто что подскажет?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: URL

Сообщение ElisDN »

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

'url' => ['/feedback/default/index']
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

Re: URL

Сообщение Dirfak »

ElisDN писал(а): 2017.10.29, 21:44

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

'url' => ['/feedback/default/index']
Ну да, и будет в url site/ru/feedback/default/index, а мне надо site/ru/feedback...
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: URL

Сообщение ElisDN »

Не будет.
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

Re: URL

Сообщение Dirfak »

только что проверил: ссылки в меню при первом открытии главной страницы:

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

site/ru/feedback/default/index/, 
site/ru/signup/, 
site/ru/login/, 
Перешел на страница feedback, ссылки в меню:

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

site/ru/feedback/feedback/default/index/, 
site/ru/feedback/user/default/signup/
В конфиге:

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

'<action:(feedback)>' => 'feedback/default/<action>',
'<action:(login|logout|signup|email-confirm|reset-password-request|reset-password)>' => 'user/default/<action>',
'<action:(profile|update|change-password)>' => 'user/profile/<action>',
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: URL

Сообщение ElisDN »

Dirfak писал(а): 2017.11.01, 22:54 ссылки в меню при первом открытии главной страницы

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

'' => 'site/index',
'feedback' => 'feedback/default/index',
'<action:(login|logout|signup|email-confirm|reset-password-request|reset-password)>' => 'user/default/<action>',
'<action:(profile|update|change-password)>' => 'user/profile/<action>',
Dirfak писал(а): 2017.11.01, 22:54 Перешел на страница feedback, ссылки в меню
Слеши забыли:

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

echo Nav::widget([
    'options' => ['class' => 'navbar-nav navbar-right'],
    'items' => array_filter([
        ['label' => 'Home', 'url' => ['/site/index']],
        ['label' => 'Feedback', 'url' => ['/feedback/default/index']],
        Yii::$app->user->isGuest ?
            ['label' => 'Sign Up', 'url' => ['/user/default/signup']] :
            false,
        !Yii::$app->user->isGuest ?
            ['label' => 'Profile', 'url' => ['/user/profile/profile']] :
            false,
        Yii::$app->user->isGuest ?
            ['label' => 'Login', 'url' => ['/user/default/login']] :
            ['label' => 'Logout (' . Yii::$app->user->identity->username . ')',
                'url' => ['/user/default/logout'],
                'linkOptions' => ['data-method' => 'post']],
    ]),
]);
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

Re: URL

Сообщение Dirfak »

Спасибо, помогло!
Закрыто