Кто нибудь знает как правильно разделить приложение на две части : бэк-энд и фронт-энд
несколько приложений в одном проекте
#1
Posted 26 February 2009 - 08:54 AM
Кто нибудь знает как правильно разделить приложение на две части : бэк-энд и фронт-энд
#2
Posted 26 February 2009 - 09:01 AM
Если делать как написано там, то использовать классы одного приложения в другом можно только если вручную их подгружать. Ну или можно перегрузить Yii autoload и подгружать автоматом со своим приложением.
Еще вариант - наследовать свой класс приложения и в нем реализовать свои отличия.
А можно узнать задачу, может есть более корректные решения?
#3
Posted 26 February 2009 - 09:11 AM
Т.е. пользователь должен ходить по урлу типа http://localhost/public
а админ должен ходить по урлу http://localhost/private
при этом и админ и пользователи должны обязательно пройти авторизацию.
Сейчас у меня есть просто 2 контроллера public и private.
#4
Posted 26 February 2009 - 09:22 AM
#5
Posted 26 February 2009 - 09:35 AM
http://localhost/public/profile/show - для простого пользователя
и
http://localhost/private/profile/show - для админа
кстати этого можно добиться разделяя контроллеры по подкаталогам....Только вот что-то у меня не получилось этого сделать??
Поддерживает ли Yii разделение контроллеров по подкаталогам?
#6
Posted 26 February 2009 - 09:36 AM
Соответственно делаем так:
contollers/
public/
UserController.php
private/
UserController.php
PublicController.php
PrivateController
И пусть к контроллерам задавать как
index.php?r=public.user/register
index.php?r=private.user/create
Модели можно использовать везде, так как приложение одно.
Вариант №2
А зачем вам вообще админский контроллер? Для действий, которые делаются в админке просто ставьте интерфейс админиский и все. Доступ проверяйте через accessControl и все дела. Таким образом, в UserController.php будет и register и create, но с разными view. Юзер и не отличит. Особенно, если урлы перезаписывать с помощью CUrlManager, то вообшще ништяк
Вариант №3
Аналогичен тому, что был приведен в ссылке сначала, с той лишь разницей, что вовсе не обязательно ложить приложения в разные директории. Создай два конфига - для клиентской и для пользовательской части и две точки входа. Внимательно посмотри на индексный файл - там приложение создается и указывается конфиг. а ты указывай свой. И все дела. Посколько все в той же папке, то подгружать можно любые модели и контроллеры
#7
Posted 26 February 2009 - 09:39 AM
Quote
http://localhost/public/profile/show - для простого пользователя
и
http://localhost/private/profile/show - для админа
И зачем нужны лишние проблемы? Пусть заходят по одному и тому же урлу, но админ будет видеть другое. Это разве проблема?
Quote
Поддерживает ли Yii разделение контроллеров по подкаталогам?
Поддерживает, смотри топики:
http://www.yiiframew...opic,806.0.html
http://www.yiiframew...opic,268.0.html
#8
Posted 26 February 2009 - 01:24 PM
Quote
http://www.yiiframew...opic,806.0.html
http://www.yiiframew...opic,268.0.html
Да спасибо! Просто думал что как в CI разделителем служит - "/" а оказалась "."
Остановлюсь на варианте с двумя каталогами для двух частей приложения, к тому же общие экшены можно повторно использовать, вынеся их в классы.
#9
Posted 26 February 2009 - 02:01 PM
Quote
Я думаю, это шибочное решение Ты модель из каталога сверху не подключишь, разве что определишь алиас для папки protected фронтенда в бекенда и наоборот и будешь с помощью него импортировать. Я думаю, если ты решил идти путем с двумя приложениями, лучше сделай просто две точки входа - frontend.php, backend.php. И напиши правила в .htaccess, чтобы выглядело как каталоги. Если сильно хочется HTTP-аутентификацию на админку так это можно и на один файл поставить.
Просто по моему вариант №3 у тебя минимальное количество телодвижений и копирования функционала.
Я сейчас у себя релизую вариант 1, возможно перейду на вариант 2, но у меня админка отделяется от проекта слабо.
#10
Posted 27 February 2009 - 12:50 AM
#11
Posted 28 February 2009 - 11:25 AM
Quote
Имхо, будет повтор кода.
#12
Posted 10 March 2009 - 01:32 PM
#14
Posted 10 March 2009 - 02:20 PM
#15
Posted 10 March 2009 - 02:24 PM
В симфони можно делить проект на сколько угодно приложений:
apps:
- backend
- - actions
- - config
- - modules
- - templates
- - etc...
- frontend
- - actions
- - config
- - modules
- - templates
- - etc...
- another_one
- - actions
- - config
- - modules
- - templates
- - etc...
При этом, модели одни, доступны всем приложениям, они лежат в lib/model на уровне apps, то есть тут нету повтора кода для каждого из приложений. Но, конечно же, можно их и переопределить в папке lib/model для текущего приложения, если не ошибаюсь...
Сами же контроллеры лежат в actions.
Дармен
#17
Posted 11 March 2009 - 09:19 AM
Quote
На самом деле удобный принцип!
Всегда пожалуйста
Принцип очень удобен, вот только почему в Yii так не сделают? Думаю, фреймворку цены бы не было...
#18
Posted 11 March 2009 - 07:09 PM
а как правильно должен выглядеть новый конфиг, если я правильно понял то там нужно переопределить представления, или?
#19
Posted 29 April 2009 - 01:09 PM
DARX, ты забыл указать, что в симфонии админский интерфейс редко кто генерит - скаффолдинг рулит.
тем кто не в курсе - в симфонии изначально заложена идея жесткого разделения пользовательской части (frontend) и админской (backend). не много приложений в одной структуре папок, а именно фронт и бэк. хотя ничто не мешает наклепать хоть десять двадцать тысяч миллионов приложений. честно говоря с трудом представляю себе цели и задачи такого проекта
так вот, создав модель и сгенерировав crud для пользовательской части, вы можете как угодно править темплейты, наводить красивость, вобщем делать все что душе заблагорассудится. ибо после генерации Crud получаете готовые к правке php файлы.
если же вы генерируете админский модуль, вы получаете заглушку для экшенов модуля и некий файл с правилами генерации отображаемой части, все остальное при рендеринге делает сам симфони. т.е. вы в конфиге пишете как хотите, чтобы отображался ваш модуль, а симфонии при отрисовке выполняет ваши пожелания. это значительно удобнее, чем поддерживать для разных приложения для одной схемы.
про повтор кода в симфонии - разные приложения и подразумевают под собой РАЗНЫЕ приложения, зачем использовать действия и модули одного приложения в другом - делай тогда плагин и пользуй.
честно говоря не понимаю в чем великая проблема и меньшее удобство в yii сделать разделенные приложения - хоть вон через модули, хоть разными контроллерами - выбирай, что удобнее в каждом конкретном случае. генратора админки, конечно, не хватает... поменял модель, почистил кеш, и ничего больше делать не надо... эх лепота
#20
Posted 18 May 2009 - 06:30 AM
После долгих мучений пришел к выводу что оптимальный вариант (по крайней мере для меня) это с двумя точками входа... плюс еще можно прикрутить наследование собственных контроллеров, дабы "добавить админский функционал".. но вобщем-то вопрос не об этом
Quote
долго долбился с мануалом, на ум приходит или returlUrl или urlReferrer, но что-то ни то не другое не помогает..
как надо настроить авторизацию чтобы был 1 контроллер?
В конфиге бэкенда прописал 'loginUrl'=>'login.html', потом в конфиге фронтенда тоже самое прописал и создал правило 'login'=>'site/login'
открываю localhost/login.html - urlReferrer пустой, returlUrl равен index.php
открываю localhost/backend.php - перебрасывает на localhost/login.html - значения переменных теже...
в чем мой косяк?
или все-таки не ломать голову и сделать показ логина через 2 действия, а обработку в одном? хотя тож чето не понятно как...

Help













