Ответы пользователя по тегу Symfony
  • Как в doctrine 2 совместить innodb и myisam?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    mysqlserverteam.com/innodb-spatial-indexes-in-5-7-...

    Внешний ключ это реакция на связанную сущность. Уберите связи и все будет хорошо. Или откажитесь от schema:update и обновляйте все только миграциями (migration:diff и там убирать генерацию ключей ненужных).

    К сожалению другого решения проблемы на данный момент нет. Разве что обновиться на свой страх и риск на тестовую версию mysql и остаться на innodb или перекочевать на postgresql.
    Ответ написан
  • Как разграничить права в Symfony2 для REST API маршрутов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    - { path: ^/api/\w+/(create|update|delete)$,   roles: ['ROLE_ADMIN'] }


    Хотя по сути у вас не должно быть этих update/delete/create. У вас должно быть POST/PUT/DELETE метод.

    Я обычно это дело прописываю в контроллере (через аннотации), либо разруливаю в сервисе. Если у нас все очень сложно - можно реализовать воутер (начиная с Syfony2.4 вроде как).
    Ответ написан
  • Как изменить тип конфигурации в бандле symfony 2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет. И да, аннотации это хорошо конечно, но умерьте свою радость и не старайтесь все делать в аннотациях. Это не всегда удобно. Когда у вас в энтитях будет валидация + мэппинги + jmsserializer + еще что-нибудь через аннотации конфигуриться то вы расстроитесь когда не сможете в этом всем ориентироваться быстро.

    Я лично предпочитаю аннотации использовать только для маршрутизации в контроллерах и для каких-то вещей которые я хочу конфигурить (десериализация запроса из json в энтити например). Все остальное в yml выношу.
    Ответ написан
  • Symfony 2, как реализовать теги для статей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как я понял это должен быть отдельный бандл ?

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

    Есть ли уже что-то готовое под symfony 2?

    https://github.com/hilobok/doctrine-extensions-taggable
    https://github.com/sulu-cmf/SuluTagBundle - нужно разбираться, сходу не скажу что норм.

    Можете поискать на packagist.org
    Ответ написан
    Комментировать
  • Symfony 2 - Куда класть и как подключать css/js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    BEST PRACTICE
    Store your assets in the web/ directory.

    symfony.com/doc/download-best-practices-book

    А так у вас пути не правильные, используйте относительные (относительно файла шаблона).
    Ответ написан
  • Как разобраться в философии symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Бандлы - самодостаточные модули инкапсулирующие какие-то сервисы и прочую штуку. По сути это расширения для DependencyInjection, если очень грубо.

    Модели - это те самые Entity грубо-говоря. Вообще есть такое понятие как Доменная-модель. Это просто структура данных, сущности которыми оперирует бизнес логика. Последняя должна быть инкапсулирована в сервисы (всякие UserManager, PostManager и т.д.). В Yii модели смешаны с сервисным слоем и по этому у вас получается путаница.

    Что до кода... есть распространенный подход иметь свой AppBundle и фигачить все в нем. Есть так же рекомендуемый подход - не использовать бандлы вообще. То есть.... бандлы должны быть самодостаточны и их основное предназначение - реюз логики между проектами. Бизнес-логику приложения реюзать у вас не выйдет, поэтому рекомендуется просто писать код и регистрировать его в app/Resources/config/services.yml или что-то в этом духе, как именно решать вам. Профит в том что вы на замарачиваетесь всей этой фигней с бандлами и у вас возникает меньше вопросов по структуре. А если же вы захотели что-то вынести в бандл - например сервисы для авторизации которые реально можно реюзать, то вам никто не помешает это сделать. В итоге у вас будет структура проекта приблизительно такая:

    | - app
    | - var
    | - src
      | - Controller
      | - Entity
      | - Bundle/
        | - MyAuthBundle/
    | - web


    ну как-то так. Как не странно такой подход не сильно распространен в Symfony-сообществе хотя его рекомендуют в недавно вышедшем бест практис буке и в принципе эта струтктура более чем логична.

    Что до виджетов, в Symfony2 есть HMVC. То есть вы можете сделать эдакие под-запросы на другие контроллеры внутри вьюшек. Можно скажем все "виджеты" инкапсулировать как отдельный контроллер с методами и дергать их из вьюшек.
    <div id="sidebar">
        {{ render(controller('AcmeArticleBundle:Article:recentArticles', {
            'max': 3
        })) }}
    </div>


    Это дает больше гибкости, внутри каждого контроллера можно дергать другие контроллеры. Можно прикрутить кеширование на уровне обработки запросов (кешировать скажем все подзапросы по каким-то критериям) и т.д.
    Ответ написан
    8 комментариев
  • Как правильно работать с symfony и angularjs ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Как правильно работать с symfony и angularjs

    Раздельно. В идеале Angular-based приложение в одном репозитории, Symfony-based - в другом. На сервере REST API. Смешивать приходится только в случае каких-то оптимизаций. На первых парах сомневаюсь что это ваш кейс.

    У angular сменил скобки на квадратные [[var]]

    Лучше просто в verbatim обернуть что бы twig не парсил. В любом случае есть масса вариантов при которых ничего экранировать вообще не нужно. Например если вам нужно по каким-то причинам какие-то данные передавать всегда, например транслейшены или чего еще, можно сделать так:

    <script>
    angular.module('app.data', []).constant('myMandatoryData', {{ data | json }});
    </script>


    а уже для приложение прописать зависимость от app.data.

    Словом старайтесь не задавать в twig вообще шаблонов для angular.js. Их можно компилить, собирать в $tempalteCache (да, если у вас все будет в куче можете смело выкинуть assetic и сделать сборку на gulp/gassetic) и много чего еще.
    Ответ написан
    4 комментария
  • Почему при миграции БД в Symfony2 с помощью DoctrineMigration изменяется то, что не изменялось?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может стоит нормально миграции писать? doctrine:migration:diff дает вам основу для работы. Ее нужно проверить и поправить под ваши нужды.
    Ответ написан
    2 комментария
  • Есть ли в Symfony 2 аналог скоупов Yii?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну начнем с того что Symfony не имеет никакого отношения к доктрине.

    Далее... какие проблемы решают скоупы? Уменьшение дублирования кода при построении запросов с использованием DbCriteria? Ну так в Doctrine в принципе нету таких проблем так как нету этой самой DbCriteria и все обычно в одном месте. Если вам нужны удобные методы для выборок, просто делаете методы в репозитории. Это эдакий бэст-практис, инкапсулировать всю логику по работе с базой в какой-то сервис.

    Если брать дефолтные скоупы (те что default и навешиваются на каждый запрос) то аналогом будут фильтры. doctrine-orm.readthedocs.org/en/latest/reference/f... Их можно отключать, так же как и в Yii можно делать resetScope.

    Почему именно default? да потому что для других случаев вообще не стоит делать подобные штуки а просто инкапсулировать всю логику по выборкам данных в репозиторий и вообще все что касается хранения сущностей в базе туда же выносить и регистрировать как сервис. А вот случаи когда мы хотим во всех запросах исключить выборку элементов с disabled=0 или что-то в этом духе фильтры подходят. Хотя стоит избегать вообще любых глобальных хендлеров, излишне использовать ивенты и т.д.

    Можно просто объявить репозиторий базовый с какими-то хелперами для построения запросов и наследовать свои репозитории от него, но обычно выборки настолько различаются что вы только сделаете себе больно.
    Ответ написан
    8 комментариев
  • Symfony - данные доступные всегда, как?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Лучше ложить такое добро в реддис и устанавливать время жизни для данных (если у вас сессии не в в пямяти валяются конечно). Скажем можно в ивент листенере это делать используя doctrine/cache или еще лучше - реализовать кеширование в сервисе провайдере данных, а он уже может либо сам ложить куда кеш либо доктрину просить... И никаких листенеров не нужно.

    А вообще, у вас это реально узкое место или вам просто захотелось пооптимизировать что-то?
    Ответ написан
  • Как перевести в продакшн проект на symfony2 ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    app.php - продакшен окружение, app_dev.php по умолчанию доступно только локально и для дев окружения. Просто не пускать людей на app_dev.... и кэш не забыть почистить (app/console cache:c -e=prod)
    Ответ написан
  • Почему не запускается проект на symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://translate.google.com/

    причины указаны в сообщениях об ошибке.
    Ответ написан
    Комментировать
  • Как создать селекты с ajax подгрузкой в symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    У вас есть возможность создать свой form type (аля ajax-select), сделать для него свой form view, дата трансформеры, да все что угодно. В чем проблема то?
    Ответ написан
  • Как сделать динамические поддомены (multiple dynamic firewalls, роутинг и т.д.) в symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну... давайте прикинем...

    1) в security.yml можно в правилах задавать host (регулярками), если у вас структура ссылок для каждого поддомена дублируется, можно ограничиться общими правилами.
    2) можно вынести домен третьего уровня как переменную запроса (ваш slug)
    3) можно реализовать свой фаервол/юзер провайдер, который сетит нужную роль пользователю в зависимости от slug и полномочий.
    4) если вы хотите вместо 401/403 ошибки отдавать 404-ую, всеравно придется реализовывать обработку ошибок и взависимости от оной менять результат.

    Но да, проверять это все в контроллере... ну можно, но стоит хотя бы вынести на уровень выше (обработчик события kernel.request).
    Ответ написан
  • Какова должна быть структура простого лендинг-сайта с формой в Symfony 2.5.x?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вот с помощью чего в Symfony2 делать формы

    symfony/forms.

    symfony.com/doc/current/book/forms.html

    Doctrine-сощности у вас может и не быть, но модель всеравно должна быть.

    Вообще разберитесь в Symfony либо возьмите что попроще для такой простой задачи.
    Ответ написан
    Комментировать
  • Как подставить значение предыдущего параметра в конфигурации бандла Symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вам доступны только те параметры, которые зарегистрированы в DI на момент начала разбора конфига. То есть %kernel.root_dir% там доступен (как и кучи других параметров), а вот %web_root_path% вы уже сами в YourBundle/DependencyInjection/Extension должны зарегистрировать как параметр.

    лучше указывайте полный путь куда сохранять, и путь к web_root отдельно.
    Ответ написан
  • Почему Symfony 2 не правильно генерирует пути к картинкам в файле стилей?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    к сожалению cssrewrite штука очень капризная.

    лично я отказался от использования assetic в пользу gulp+bower.

    вам же советую почитать ишусы о cssrewrite и треды на SO.
    Ответ написан
    3 комментария
  • Почему git не ратает на ubuntu(symfony2, php)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вы еще не завалили тестовое задание?

    symfony.com/doc/current/quick_tour/the_big_picture.html

    Совет на будущее, даже если от вас хотят сделать что-то быстро быстро, лучше все же потратить хотя бы день два на изучение документации. Языковой барьер частично поможет решить google translate. Иначе без отсутствия понимания того, что вы делаете, у вас будет уходить слишком много времени на какую-нибудь тривиальную фигню. С инструментами вроде Yii это канает (или канало, не уверен на счет Yii2), а с Symfony стоит разобраться или хотя бы самостоятельно разбираться, коль уж изучаете методом тыка.
    Ответ написан
  • Как утсановить Symfony2 на Apache?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну так следуйте инструкциям приведенными вами, неужели сложно разобраться?.

    xdebug.max_nesting_level - установите хотя бы 250 и более. И да, установите уже PHP5,5 хотя бы. 5,6 на днях релизнулся уже.

    Смысл пытаться освоить symfony если вы еще с php не разобрались?
    Ответ написан
  • Где PHP программисту взять современные бесплатные несложные шаблоны сайтов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    без ненужных #FF2A00 вместо 'red'

    спорное утверждение.

    Все упирается в кроссбраузерность. Можно сделать красивый шаблон в минимум строк стилей, который не будет работать в IE ниже 10-ки.

    И чем вас не устраивает bootstrap.
    Ответ написан