помогите с начальной архитектурой
Здравствуйте. У меня вопрос такого плана. я использую MVC Framework php для реализаии вывода картинок. Он отдает плагину json с путями картинок. Нужно сделать чтобы например когда заходишь на главную страницу то была бы отдача html и json данныи одним запросом подгружены или образованы (нужно придумать).
Например у меня такой кусок <? $this->renderPartial('//layouts/inside/navigation'); ?> <!--<div id="loading"></div> <div id="gallery"></div> --> <div ng-controller="TodoController"> <div ng-view></div> <?//= $content; ?> </div> Сам плагин грузит картинки в блок <div id="gallery"></div> . А хотелось бы чтобы и navigation блок и json были подгружены Один после другого одним запросом. Или мне только html в json писат а потом разбирать ? |
Ну если вам охота заниматься разбором "что это?" соединяйте. Что мешает на главной странице на стороне сервера добавить в html-код блок script с готовым массивом?
|
массив меняется в зависимости от переданных параметров запроса. На стороне сервера я могу только отдать шаблон таким образом что передастся header перед отправкой json и запрос просто не пройдет. Получается что не генерируя первый вид в php я хочу загрузить (ajax или по другому ) данные которые состояли бы из json данных и предшествующих их html (
<div id="loading"></div> <div id="gallery"></div> ) с запуском js скрипта самой галлей Я могу сделать так что бы выводились данные на место <?= $content ?> сгенерированные в контроллере php <? $this->renderPartial('//layouts/inside/navigation', array('show_nav'=> true));?> <div id="loading"></div> <div id="gallery"></div> <script type="text/javascript"> $(function(){ ..... но тогда как мне избавляться от всего блока где картинки мои, если я захочу перейти на другую страницу по маршрутам agular ? Того же он просто подгрузит данные на место <ng-view> </ng-view> из php. может быть есть какой нибудь способ по загрузке странички когда все сформируется инициализировать вызов ангулар и подгрузить все во view angular то что придет через его аякс запрос ? |
Цитата:
... Если отступить на пару шагов назад..... Евгений, когда я начинал проект с Институтом Археологии (я вам ссылку посылал в соседней теме), то стоял перед дилеммой: (1) делать генерацию html-шаблонов на PHP, или (2) всю шаблонизацию поручить ангуляру, а на PHP сделать только REST-api ?? Поскольку мне дали какое-то время на планирование проекта, я решил попробовать (на локалке) и так и сяк. Работало всё худо бедно в обоих вариантах и я продолжал этот эксперимент некоторое время.... ...около трёх недель... пока проблемы подобные описанной вами не стали основательно надоедать ... до сих пор на локалке PHP-версия генерации шаблонов пылится в том сентябрьском варианте - оставил тогда на случай если вдруг появится резон вернуться к той версии. Так вот: сейчас вспоминаю свои поиски таких резонов как глуповатый и страшноватый маразм, Ангуляр - шаблонизатор гораздо более умный, гибкий и продвинутый (и гораздо более удобный), нежели PHP. А второй выигрыш (в который PHP-шники никак не хотят верить, несмотря на измеримые факты) : ощутимый выигрыш по времени - поскольку шаблоны и JSON-код из базы данных грузится практически ПАРАЛЛЕЛЬНО (с двух разных доменов). Что вполне объяснимо и весьма очевидно. Запросы на тот и другой сайт уходят асинхронно, какой кусок раньше прилетит, тот и загружается. Короче... всё что я хотел сказать: у меня таких проблем нету, и вам не советую их иметь - они тупые и неинтересные :) ... и если ещё не поздно переиграть схему - не раздумывая бросайте PHP-MVC-схему, делайте весь интерфейс и бизнес-логику на HTML-CSS-JS(Angular). А на пыхе оставьте просто поставку JSON'a из базы данных - с этим он справится отлично. // Извините, если нечаянно наехал на какое-нибудь убеждение или // поломал какую-то важную политическую игру, тогда можете просто проигнорировать этот пост, // я не хотел, если что.. ;) |
Я не очень силен во фронт но чувствую что нужно становится. Проект только в стадии проектирования . Так что буду следовать заповедям вашим ! :) может заодно подскажите как сделать такое . На каждой странице у нас блок див в котором или кнопка доступ к странички profile-user или Login В Зависимости пользователь вошел или нет. как бы вы это реализовали если ангулар кэширует данные с шаблоном ?
|
Цитата:
Это на ангуляре делается сотней способов. Ключевые фишки для управления DOM'ом "по условию": ngShow ngIf ngSwitch ngInclude // ngInclude берёт на вход ангуляр-выражение, так что можно перегружать шаблон по собственному условию, если шаблон кеширован - то и берётся из кеша. и т.д. Начни разбираться - быстро сам найдёшь ещё возможности. Для примера приведу кусочек своей менюшки, меняющийся в зависимости от пары условий: <ul class="nav navbar-nav pull-right"> *!* <li ng-show="loginView()" class="divider-vertical"></li> <li ng-show="loginView()" class="divider-vertical"></li> <li ng-show="loginView()" ui-sref-active="selected"><a ui-sref="Login">{{menuLoginText()}}</a></li> */!* <li class="divider-vertical"></li> <li class="divider-vertical"></li> <li class="divider-vertical"></li> </ul>Тут два вида изменений. Во первых, кнопка вообще может быть невидима. Для случайного гостя вход на сайт вообще отсутствует. Чтобы отобразилась кнопка "Вход", нужно нажать другую "особо секретную" кнопку, и где её искать, знают только "посвящённые" зарегистрированные пользователи, которым разрешается редактирование базы. Реализовано посредством ng-show="loginView()", функция loginView() возвращает булево значение. Второй аспект - текст на кнопке, меняющийся в зависимости от того, залогинился ли пользователь и каковы его права. Реализовано через <a ui-sref="Login">{{menuLoginText()}}</a>. Всё работает как часы и мгновенно реагирует на изменения переменных в контроллерах. |
Часовой пояс GMT +3, время: 09:59. |