Показ формы логина на всех страницах

Привет, друзья!

На днях наткнулся на эту чудную вещь, именуемую Yii.

Вопрос вот в чём. Необходимо показывать форму логина (или, если юзер залогинен - пользовательское меню) на всех страницах сайта. С меню пользователя, думаю, не проблема разрулить. Вопрос в форме.

Форма сама создана изначально, и показывается на странице Login. При попытке впихнуть html формы в main.php из папки view/layouts мне выдаёт ошибку, связаную с тем что не определена переменная $form. Данная переменная определяется в контроллере SiteController.php , в экшне страницы логина - actionLogin().

Представление о MVC я имею, но пока что не очень тесно сдружился с данным концептом.

Подскажите как решить мой вопрос.

Заранее, спасибо!

Посмотри на этот виджет: http://www.yiiframew…xtension/login/

Это то что тебе и надо.

Твоя задача должна решаться установкой виджета формы, который и показывает форму и обрабатывает ее. По ссылке выше как раз такой виджет. Только он завиит от виджета Portlet

(http://www.yiiframework.com/extension/portlet/)

Зависимоть эта чисто условная, там только оформление общее. Понв идею можешь сам такое сделать под свои нужды

Хм. действительно, то что надо.

Так вот в чём вопрос, тады… То что касается контента (новости, статьи, и куча всей динамич инфы на сайте) создаётся путём создания CRUD, так?

Всё-же остальное, где не нужны эти операции CRUD, нужно юзать виджеты и компоненты. я правильно понял?

Quote

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

а вот такой вопрос. на каждой странице есть поиск. кто должен обрабатывать запрос формы и выводить результат в контенте страницы

Quote

а вот такой вопрос. на каждой странице есть поиск. кто должен обрабатывать запрос формы и выводить результат в контенте страницы

Форма - это виджет, а обрабатывать должен какой-то контроллер. Ты ж не в виджете результаты поиска показываешь. В случае с логином можно чтобы виджет обрабатывал логин. потому что он же и показывает панель юзера потом.

Quote

Хм. действительно, то что надо.

Так вот в чём вопрос, тады… То что касается контента (новости, статьи, и куча всей динамич инфы на сайте) создаётся путём создания CRUD, так?

Всё-же остальное, где не нужны эти операции CRUD, нужно юзать виджеты и компоненты. я правильно понял?

Не совсем. Если работал с джумлой, то можно провести такую аналогию. Компонен джумлы - то контроллер. А модуль джумлы - это виджет. Компонент - это общее название и контроллера и видета и еще дофигищи всего, все это наследуется от компонента.

Если не работал с джумлой, тогда так. Все, что выводится в страничках, в основном контенте - это модули (Yii) и контроллеры. Все что по бокам и сверху, панельки всякие - это целесообразно делать виджетами. Если есть какие-то часть повторяющиеся части. Например, картинка продукта с подписью и ценой - встречается и в результатах поиска и в "бестселлерах" и в "популярное", то это тоже хорошо сделать виджетом, который ты потом везде просто вызываешь.

Вообще виджет - это цельный часто повторяющийся кусок кода, который служит, в соновном, для вывода инфы.

Так-с. ну насчёт виджета я понял. оч доходчиво объяснил, за что и спасибо =)

Возвращаясь к вопросам модулей… Получается что Новости (news) это по сути модуль? Однако тут получается что модуль работает немного по другому принципу нежели виджет, так ведь?

Т.е. если я виджет вызываю "руками" в определённом месте, то для новостей я сначала создаю модель и потом crud, и потом просто переделываю под свои нужды его views и всё. правильно я понял?

Есть модуль в абстрактом смысле - модель, контроллер, представления (виды). А есть модуль в понятии фреймворка - это несколько контроллеров, моделей, представлений, объединенных некоторым общим смыслом. Например блог в ккорпоративной системе может быть таким модулем.

А если мы пишем сайт-блог, то там будут только "абстрактные" модули - несколько контроллеров, моделей, представлений.

В твоем простом случае, новости будут состоять из модели.ю контроллера и нескольких представлений. Это можно назвать модулем, но в Yii это та не называется :) Просто модель-контроллер-представление.

Ага, всё понял. Биг Сэнкс =)

зы всю жизнь писАл на голом пхп, однако щас начинаю понимать как я много терял не используя фреймворки =)

Это нормально. Все так делают, почти все. Пройдет еще годик-другой и поймешь что и сайты - это не самое гениальное и денежное что есть :)