YiiBoilerplate
10 августа 2012
CleverTech, где я ранее работал tech lead-ом, выложили на github шаблон для новых проектов, который используется внутри компании.
Начали собирать шаблон в прошлом году я, Jeffrey Winesett и многие другие разработчики. Закончил и оформил Antonio Ramirez.
Для простых проектов шаблон немного сложноватый, но для проектов побольше сильно упрощает жизнь. Используются идеи, которые описал Qiang в wiki. Главная полезность — деплой скрипт для смены окружений и использования локальных конфигов.
Комментарии RSS по email OK
А где ты сейчас работаешь, если не секрет?
Пардон, затупил, читал же про stay.com
Может я чего-то не понимаю, но почему такая структура? Чем она хороша/нужна/полезна?
наконец то появился пример с использованием этой архитектуры - развеял оставшиеся вопросы.
вопрос по использованию global.php: нормально ли делать так? я пробовал использовать такой способ в начале разработки на yii и мне настоятельно рекомендовали отказаться от этой затеи.
metalguardian, нормально. Почему нет?
Конечно, если пишете какие-то расширения и выкладываете в народ, такое делать не стоит. Но в своём-то проекте кто запрещает?
Отличная новость
А можно ли как-то применить структуру на шаред хостнгах, где нет доступа до конфигов сервера?
Нет.
почему? можно. только надо вынести www. поменяются только пути к конфигам и фреймворку
Тут предполагаются два разных вебрута для frontend и backend.
тут тоже нет особых проблем. любой шаред хостинг позволяет поддомен создать. и от туда опять же правильные пути к конфигам прописать и все готово
Т.е. 2 различных сервера 1 под фронт другой под бек ?
Всё разобрался прочитав Коммент
Вот только обилие конфигов смущает
Вроде же 1 production другой development, а там всяких ...
Я ранее использовал такое разделение. Сейчас использую такое.
также в папках backend и frontend храню уникальные для фронтенда и беккенда библиотеки. В папке config находятся конфиги backend, frontend,main и конфиг особенный для данного домена (на локалке будет localhost). Теперь. Если мы заходим через index.php то подключается main.php, через CMap::mergeArray объединяется с frontend и мержиться с конфигом домена (в нашем случае с localhost). И главное в frontend конфиге переопределяется папка для контроллеров и вьюшек
таким образом для фронтенда и беккенда у нас общие модели, расширения, компоненты, библиотеки и т.д. В тоже время мы можем размещать библиотеки и конкретно для беккенда и фронтенда в их папки. И главное что мы можем использовать как и раньше ext.extensionName.classMame. Для моих целей этот вариант разделения сочетает преимущества разделения YiiBoilerplate и удобства и простоты обычного варианта.
Если приложения под одним доменом - фронт, бэк и мобильный. Для фронта и мобильного нужна общая авторизация ,"remember me" и желательно учесть добавление авторизации через сервисы.
Как примерно это реализуется, может кто сталкивался?
Вот есть у меня папка домена на хостинге или там сервере. htdocs/mysite.ru/
Я заливаю туда то что они предлагают. Мне надо что бы из корня редиректилось на frontend/www/ А к примеру из mysite.ru/back на backend/www
пыталась сделать .htaccess
Но почему то не работает - вообще это правильно? Или есть какие-то другие методы?
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^boiler RewriteRule (.*) /frontend/www/$1 [R=301,L]
вот так работает, но что дальше... урлы то получаются уродливые...
типа boiler/frontend/www/?%D0%B0%D0%B0%D0%B0=000
кажется поняла -надо править конфин апача - Virtual Hosts - а другого выхода нет?
porcelanosa, скорее всего нет.
to:metalguardian Мог бы ты на примере показать как можно под шаред хостинг конфиг прописать с использованием поддомена?
Или может ты сем можешь что-то подсказать?
Буду благодарен!
заливаем приложение как есть.
в cpanel (директадмине) создаем поддомен для бекэнда (например, admin). корневой папкой указываем ..../backend/www/ это довольно просто.
с фронтом немного сложнее: тут нужно или создавать отдельный поддомен (например, front) или выносить каталог www из приложения. первый вариант - делаем тоже что и для админки. второй вариант: в index.php выставляем правильные пути к конфигу и приложению.
надеюсь понятно объяснил
Спасибо за такой быстрый ответ!
Вроде понял - только проблема хостинг мастерхост и тут нет возможности выбора корневой папки
Даже не знаю что делать
Еще 1 вопрос - а куда собственно файл robots.txt поместить? в папку frontend/www или frontend ?
конечно в frontend/www - ведь это публичная папка - а доступ к остальным файлам в папке fronend должен быть закрыт извне.
Возникла такая проблема. Сайт мультиязычный. В frontend лежит модель User, attributeLabels() указаны через Yii::t() Папка messages лежит в frontend. Необходимо использовать эту модель в backend. Сделал импорт модели в конфиге backend, модель загрузилась, но attributeLabels() в форме не переводятся на русский язык. В конфиге в одном и втором выставлен язык приложения русский. Как возможно заставить работать Yii::t() ?
Буду очень признателен за ответ.
Надо поменять вот это свойство через
components
конфига на путь к файлу вfrontend
.Александр, спасибо. Поменял - все заработало.
А где в этой структуре папок хранить ресурсы (изображения , файлы и т. д.)? Доступ к ним нужен и back-приложение и front-приложение. Может быть в common, на пример в папке resources? Публиковать их с помощью menager assets?
Да, так вполне нормально.
А я сделала домен i.site.ru и на сервере прописала DocumentRoot к папке common/i/ Возможно это неправильное решение, но теперь я всё загружаю туда и документы и изображения. В конфиге сделала параметр dir=>array( 'base' => '/../../common/i/', //серверный путь web => 'i.site.ru/', )
А есть ли возможность использовать общие модули?
Да есть, но, к сожалению, YiiBooster теперь развивается только комьюнити на GitHub У авторов новый проект - yiinitializr.2amigos.us/ Не знаю, хорошо это или плохо, он вроде бы более продвинутый, но по-моему стал еще сложнее для внедрения в простые проекты. Точнее я с ним, в отличии от YiiBooster еще не разобралась.
Но, имхо, ни то ни другое для простых проектов не подходит. многие виджеты bootstrap, входящие в YiiBooster - изначально взяты из проекта YiiBootstrap - который продолжает развиваться. И у его автора есть тоже свой проект www.yiiframework.com/wiki/446/kickstart-development-with-yii-app/ Следующий проект, попробую на нем делать. Хотя там тоже используется Composer - в котором я не в зуб ногой. Но похоже надо за это браться ;-)
Я Composer'ом научился пользоваться благодаря Christoffer Niska (Crisu83) и его Yii-app. Многие его идеи и заимствовал Antonio Ramirez (tonydspaniard). В его YiiBoilerplate мне как раз не нравилось, то что они пользуются своим php-скриптом, а не Composer'ом. Yiinitializr очень интересный и хорошо развивающийся проект. Кстати там у них сейчас 3 шаблона (для простых, средних и сложных проектов). Простой шаблон как раз похож на Yii-app.