URL страницы динамической CMS Yii2

Я создал несколько страниц CMS для своего сайта. И теперь я хочу сделать это примерно так, например: domain.in/aboutus

И я создал псевдоним страницы для каждой страницы CMS в моей базе данных.
Если я назову эти псевдонимы страниц, я должен получить соответствующие страницы.

Я прилагаю свои правила здесь

     'urlManager' => [               
            'showScriptName' => false,  // Disable index.php
            'enablePrettyUrl' => true,  // Disable r= routes
            //'enableStrictParsing' => true,
            'rules'=>array(
'aboutus'=>'cms/index/1' //I need this line dynamically
        '<siteName:\w+>/<role:(teacher|parent)>' => 'customers/login',
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
       ),
        ],  

Кто-нибудь может помочь решить эту проблему?


person Mohammed Iqbal Khan    schedule 16.03.2016    source источник
comment
Можете ли вы процитировать два разных сценария, чтобы объяснить эту динамическую функцию, которую вы намереваетесь достичь?   -  person ck_arjun    schedule 16.03.2016
comment
@ck_arjun hai.. мой текущий сценарий URL-адреса: project_name.in/cms/index/1 Мне нужен такой URL-адрес project_name.in/aboutus   -  person Mohammed Iqbal Khan    schedule 17.03.2016
comment
Проверьте, работает ли он. stackoverflow.com/a/36057877/5658658   -  person ck_arjun    schedule 17.03.2016
comment
Спасибо, Арджун, это действительно сработало ... Спасибо за ваше время ...   -  person Mohammed Iqbal Khan    schedule 17.03.2016


Ответы (1)


Вы, вероятно, думаете о слагах URL.

Вы все равно хорошо начали, но вам нужно реализовать гораздо больше, чем просто правила URL. Правильный способ сделать это — реализовать Sluggable Behavior в Yii2. , что делается на уровне модели, и поддерживают слаги на уровне контроллера. Это не короткая задача, но на ее выполнение не должен уйти целый день.

На этот уже был дан ответ, так что вы можете взглянуть на него.

Более полное пошаговое руководство можно найти в это руководство.

Таким образом, вы должны:

  1. Добавьте атрибут slug в свою модель «страницы» и в свой db.
  2. Добавьте к модели замедленное поведение.
  3. Определите, какое действие в контроллере будет иметь дело с слагами.
  4. Настройте менеджер URL-адресов для работы с слагами.

Надеюсь это поможет.

person XzAeRo    schedule 16.03.2016
comment
Спасибо за ответ, но мне нужен такой URL-адрес, как этот project_name.in/page_name.insted для загрузки контроллера. Мне нужно имя страницы... мы можем добиться этого в Yii 1 ny, используя "ext.DbUrlManager.EDbUrlManager"..Is есть ли способ добиться этого в Yii2?? - person Mohammed Iqbal Khan; 17.03.2016