CViewAction или статические страницы

Обсуждение документации. Переводы Cookbook и авторские рецепты.
Ответить
Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

CViewAction или статические страницы

Сообщение slavcodev »

Один из классов в Yii — CViewAction — очень легко забыть или не заметить в API.

Вольный перевод документации по этому классу:
CViewAction представляет действие, которое выводит представление согласно настройкам.

По умолчанию, представление назначается через GET-параметр. Имя параметра настраивается переменной viewParam. Если GET-параметр не будет найден, выведется представление по умолчанию, установленное через переменную defaultView.
Как говорится: «Всё гениальное, просто!». Это действие удобно использовать для отображения статических страниц, например соглашения об использовании.

Для примера возьмём задачу создания собственных страниц с ошибками.

Создаём в папке /protected/views/errors/ представления: 404.php, 500.php и другие.
Контроллер /protected/controllers/ErrorController.php

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

class ErrorController extends CController {
    public function actions() {
        return array(
            'show' => array(
                'class' => 'CViewAction',
                'basePath' => 'application.views.error',
                'viewParam' => 'message',
                'defaultView' => '404',
            ),
        );
    }
} 
Все готово пробуем:
http://localhost/error/show/message/404/
http://localhost/error/show/message/500/
Жду Yii 3!

pirrat
Сообщения: 193
Зарегистрирован: 2009.04.03, 09:41

Re: CViewAction или статические страницы

Сообщение pirrat »

Спасибо, действительно был не замечен этот класс=)

Satellite
Сообщения: 5
Зарегистрирован: 2009.10.02, 15:31
Контактная информация:

Re: CViewAction или статические страницы

Сообщение Satellite »

Контроллер /protected/controllers/ErrorControolers.php

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

class ErrorControllers extends CController {
...
} 
наверное, парвильней будет:
Контроллер /protected/controllers/ErrorController.php

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

class ErrorController extends CController {
...
} 
а то те, кто любит копипастить, неправильно создадут контроллер.

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: CViewAction или статические страницы

Сообщение slavcodev »

Исправил, хотя это рецепт и его задача чтоб кодеры вникли что и как делать, а не копипастить :)
Жду Yii 3!

Аватара пользователя
radamir
Сообщения: 142
Зарегистрирован: 2009.08.10, 08:02
Откуда: Новосибирск

Re: CViewAction или статические страницы

Сообщение radamir »

Вот ведь. Думал всё руководство и весь код излазил вдоль и поперёк, а этого класса в глаза не видел :-) Большое спасибо.

Аватара пользователя
chungachguk
Сообщения: 428
Зарегистрирован: 2012.07.17, 11:52

Re: CViewAction или статические страницы

Сообщение chungachguk »

Я этот класс заметил, но не понял почему решено было сделать так:

папку создаем /protected/views/errors/, а путь указываем 'basePath' => 'application.views.error', т.е. error без s на конце.

Есть ли в этом логика?

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: CViewAction или статические страницы

Сообщение slavcodev »

Эта опечатка.
Жду Yii 3!

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CViewAction или статические страницы

Сообщение lancecoder »

ошибки не совсем удачный пример, шаблоны с ошибками можно намного проще создать

Аватара пользователя
slavcodev
Сообщения: 3133
Зарегистрирован: 2009.04.02, 21:42
Откуда: Altea, Spain
Контактная информация:

Re: CViewAction или статические страницы

Сообщение slavcodev »

Рецепт про CViewAction, а не про реализацию ошибок. Предложи лучший пример, поменяю.
Жду Yii 3!

Аватара пользователя
lancecoder
Сообщения: 2532
Зарегистрирован: 2012.06.26, 17:16

Re: CViewAction или статические страницы

Сообщение lancecoder »

Это действие удобно использовать для отображения статических страниц, например соглашения об использовании.
чтобы создать свои шаблоны ошибок достаточно просто создать файлы в views, например error500.php
upd: я просто написал, чтобы не вводить людей в заблуждение, это не реализация своих шаблоннов с ошибками, а просто пример работы класса

Ответить