Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Архитектура приложения
Форумы портала PHP.SU » PHP » Программирование на PHP » Архитектура приложения

Страниц (1): [1]
 

1. Panoptik - 18 Ноября, 2013 - 14:37:31 - перейти к сообщению
Приветствую

столкнулся с дилеммой, есть большой проект, в нем различные разделы в виде модулей
к примеру есть 2 модуля /admin && /manager. для определенных действий тех и иных пользователей по ролям. интерфейсы у этих 2-х модулей одинаковы, но контент другой, к примеру у пункты меню частично отличаются и функциональность также.

вобщем проблема в том, что некоторый функционал частично совпадает, примерно, на 30-50%
но в больших формах есть некоторые различия к примеру у админа доступны дополнительные поля.
городить if else не хочется поэтому решил разделить всё отдельно, хотя макет остался тот же (верстка, файлы стилей и скрипты) но разметка форм хранится в разных файлах. и вот у меня есть огромная форма, которую я вынужден дублировать, но меня просто выворачивает от таких действий

хотелось бы спросить совета. как лучше поступить в данной ситуации? создавать отдельно и дублировать некоторый функционал, или держать всё в одном модуле и разграничивать весь вывод исходя из ролей
2. tato - 19 Ноября, 2013 - 02:00:02 - перейти к сообщению
Если много ифов получается, то делать "дубликат", если парочка, то можно и один.
Можно часть в виджеты перенести, например генерацию меню, что бы в шаблон вставить, что-то такое widget( 'Menu', $params ); и все, а уже в самом виджете рулить по обстановке.
3. caballero - 19 Ноября, 2013 - 02:47:57 - перейти к сообщению
Цитата:
всё в одном модуле и разграничивать весь вывод исходя из ролей

да
ты вместо ифов получил дубликат формы.
лично я в своих проектах вообще админку отдельно не делаю

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

jklgflkergh
барышня, у вас что парня нет что вы такая злюка? Девушка должна быть доброй, милой ласковой а вы как неотесаный мужлан. Огорчение
(Добавление)
я так понял что в тут зарегались пока админы спят
4. RomAndry - 19 Ноября, 2013 - 05:09:08 - перейти к сообщению
caballero пишет:
jklgflkergh
барышня, у вас что парня нет что вы такая злюка? Девушка должна быть доброй, милой ласковой а вы как неотесаный мужлан.

недотрах =)
5. Panoptik - 19 Ноября, 2013 - 16:52:07 - перейти к сообщению
tato пишет:
Можно часть в виджеты перенести, например генерацию меню, что бы в шаблон вставить, что-то такое widget( 'Menu', $params ); и все, а уже в самом виджете рулить по обстановке.
собственно всё что можно вынести в виджеты вынесено
общие функции контроллеров вынесены в хелперы

caballero пишет:
лично я в своих проектах вообще админку отдельно не делаю

и это
caballero пишет:
есть отдельные страницы доступные админу который логинится как обычный юзер

ну тут в принципе это тоже дополнительные страницы

осталась только проблема с макетами, так как в модулях в моем случае (Yii) они находятся в разных папках и к ним довольно сложно обращаться, но это уже вопрос для гугла

всем спс за объективное мнение
6. caballero - 19 Ноября, 2013 - 17:02:08 - перейти к сообщению
ну так если страница та же самая используется то и макет будет тот же самый
7. tato - 20 Ноября, 2013 - 03:11:18 - перейти к сообщению
Panoptik пишет:
так как в модулях в моем случае (Yii)

Что ж Вы сразу не сказали, что на Yii (=

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

Так же в конфиге приложения можно задать директорию где лежат представления модуля
PHP:
скопировать код в буфер обмена
  1.  
  2. 'modules' => array(
  3.     'MyModule' => array(
  4.         'layoutPath' => 'protected/views'
  5.     )
  6. )
  7.  


Что бы обратится к представлению из другого контроллера используем два слеша:
PHP:
скопировать код в буфер обмена
  1.  
  2. $this->render( '//site/_login_form' );
  3.  

 

Powered by ExBB FM 1.0 RC1