Вопрос

Мне нужно правило для http://example.com/post/view/id/1 URL, который будет отображаться таким http://example.com/post/post_title. Анкет Вместо идентификационного номера я хочу отобразить имя или заголовок сообщения.

Моя конфигурация выглядит так:

 'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(             
            //'<controller:\w+>/<id:\d+>'=>'<controller>/view',
            //'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            //'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
                    'showScriptName'=>false,
    ),
Это было полезно?

Решение

вам нужно иметь правило, которое выглядит так

'post/<post_title:\w+>'=>'postController/view/title/<post_title>',

Это просто говорит приложению для пересылки запросов, которые начинаются с post/post_title в ActionView Post Controller, где $ _get ['title'] устанавливается в post_title ...

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

Другие советы

Это простое правило

'post/<post_title:\w+>' => 'post/view'

Если нужен такой URL -адрес http://example.com/post/some-title-with-hyphen

'post/<post_title:[-\w]+>' => 'post/view'

И вам нужно действие контроллера с аргументом $ post_title

public function actionView($post_title) {
    ...

По умолчанию YII только заканчивает идентификатор сообщения, если вы хотите отобразить заголовок Post, вам нужно получить доступ к DB в соответствии с правилами пользовательского класса URL. В учебнике YII есть пример Использование классов Custom-Url-Rule

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top