Ответы пользователя по тегу Symfony
  • Как изменять сущности без форм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Правильный способ: не использовать сущности в контроллерах, вообще, и никогда не скармливать их ни JMS Serializer-у ни формам.

    Более-менее правильный способ, определить свой Object Constructor для JMS Serializer-а что бы дать возможность указывать в какой объект пихать данные.
    Ответ написан
    5 комментариев
  • Как автоматически загружать вложенные сущности (ParamConverter)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    JmsSerializer может это все десериализовать, а в fos rest есть нужный вам param converter.
    Ответ написан
  • Почему замедляется работа скрипта?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    оптимизировать работу с базой. Я на 99% уверен что:
    - товары вставляются по одному
    - перед каждой вставкой вы проверяете наличие категорий и прочего через базу, причем индексов в базе у вас нет или mysql (вы же mysql используете?) у вас настроена дефолтным образом и выходит много чтений с диска

    Хотя даже при таком раскладе 20 часов для 16К элементов это как-то сильно долго...
    Ответ написан
    5 комментариев
  • Целесообразно ли использовать yml с данными, вместо бд и entity?

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

    Тут другой вопрос, если это удобнее поддерживать через yaml будет (как никак его можно в git хранить, что упрощает контроль), то может оно и лучше.
    Ответ написан
  • Правильный deploy Symfony2 проекта при наличии bower.json и grunt?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    на CI-сервере делаем билд (tar.gz/deb/rpm) по git push и деплоим его. Для деплоя, коль уж вы rsync-ом пользуетесь. можно воспользоваться штуками типа капистрано/капифони.

    p.s. рекомендую посмотреть в сторону vagrant + ansible для автоматизации управления инфраструктурой. Или вообще на docker.
    Ответ написан
  • Деплой Symfony2. Как web сделать корневой?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Удаляем public_html (или как там ваш webroot завется) и делаем симлинк на web директорию.
    Ответ написан
    1 комментарий
  • Как лучше организовать работу с сервисами в контроллере $this->get('service') vs controller as service?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    или внедрят по тайп хинтингу

    На самом деле тут есть варианты:
    - написать compile pass который будет агрегировать всю эту инфу + param converter который будет инджектить сервисы в контроллер (можно взять за основу готовые штуки, типа как тут и тут
    - использовать PHP-DI

    Остается вариант контроллеры как сервисы.

    Этот вариант хорош только в случае если у нас контроллеры толстые, что само по себе плохо.

    Как у вас организованно контроллеры?

    экшен контроллера собирает данные из запроса (можно просто кастомные запросы делать и через парам конвертеры разруливать) и передает в сервис уровня приложения, потом выводит результат его работы. Использую get метод и не парюсь, контроллеры это вообще не то о чем надо париться (кроме того что они должны быть тонкими).
    Ответ написан
    5 комментариев
  • Почему doctrine не может проставить правильный id при создании записи в базу в postgresql?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    читаем про каскадный persist. И да, я бы на вашем месте попробовал бы развернуть связь. А еще лучше - апнитесь до Doctrine 2.5 и вместо one-to-one используйте embeddable.
    Ответ написан
    Комментировать
  • Почему action в symfony2 выполняется дважды?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    var_dump($_SESSION)

    вы же используете symfony... не используйте суперглобалы

    Куда копать?

    favicon, посмотрите access логи.
    Ответ написан
    3 комментария
  • Как можно в Symfony загрузить файл сразу на облако (Яндекс.диск, Dropbox и т.п.)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ну файл то всеравно на сервер для этого нужно загрузить. Нет, можно конечно и с клиента но это не секьюрно.

    В целом рекомендую использовать flysystem, там есть адаптер для webdav.
    Ответ написан
    Комментировать
  • Как объединить две сущности в одну?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    другая приходит от клиента

    ммм.... с внешней API? Или именно с клиента через Request? если последнее то это не сущность, это просто какие-то данные.

    В целом как-то так:
    1) забираем данные из запроса и делаем из этого DTO (просто какой-то объект с полями, можно публичными что б было проще, можно вообще просто массивчики или stdClass юзать).
    2) валидируем этот DTO
    3) если все хорошо, либо у нас есть сервис, который умеет через сеттеры обновлять энтитю, либо у энтити есть метод updateFromDTO($dto);

    как-то так.
    Ответ написан
    Комментировать
  • Вернуть путь к загруженному файла в doctrine-сущности?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    1) сущность не должна уметь загружать файлы.
    2) зачем эти извращения в DQL? можно сделать то же самое в геттере, а еще лучше передавать в геттер сервис который будет ресолвить все что нужно через дабл диспатч:
    function getFile(FileResolver $resolver) {
        // причем только потому что учавствуют два поля
        return $resolver->resolve($this->folder, $this->filename);
    }


    что-то в этом духе.

    А если у нас Doctrine 2.5 можно вообще хранить value object аля FileReference и тогда все еще проще, тогда FileReference можно крутить как хочешь и тот же FileResolver смог бы его как аргумент брать.
    Ответ написан
    Комментировать
  • Есть ли в symfony2 бандлы-аналоги Yii2 GridView (см скриншот)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://github.com/Abhoryo/APYDataGridBundle - можно для этого бандла просто переопределить шаблон что бы использовать дефолтные бутстраповские стили.

    Какие используете вы?

    Никаких, ненавижу таблицы. Использую списки обычные и отдельный блок фильтров. Да и админки у меня на angular так что в этом вообще нет смысла.
    Ответ написан
    Комментировать
  • Изучение Symfony2/Laravel, сколько времени потребуется?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    сколько примерно времени займёт период от начала изучения до первого собеседования

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

    На symfony2 в среднем проекты поинтереснее, так что я рекомендовал бы именно его. В любом случае переход laravel <-> symfony не является проблемой, ибо различия принципиальные там только в ORM идущей из коробки. Архитектура же этих фреймворков в целом схожа, разница в нюансах. Например в laravel мидлвэры как отдельная сущность, а в symfony они реализуются через события ядра, но суть та же. Еще нюансы с доктриной, эта штука довольно сложная и ее очень легко использовать неправильно, особенно с mysql. Но после того как разберетесь с ней возвращаться на всякие там active record-ы совсем не захочется. По сути это единственная полноценная ORM в php мире.

    Еще вне зависимости от выбора рекомендую ознакомиться с такими штуками как луковая/гексагональная архитектура, почитать чего по TDD и тестирование в целом. Кента Бэка например, Эрика Эванса.
    Ответ написан
    4 комментария
  • Стоит ли изучать Symfony?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    не составит труда, если изначально все было спроектировано правильно.

    И тут приходим к тому что нужно учить не фреймворк, он тут много погоды не делает (хотя в Symfony чуть сложнее накосячить, хотя всегда можно сделать ужасно). Так же есть определенные нюансы. Скажем если вы захотите проникнуться настоящим феншуем, DDD всякими и т.д. придется отказаться от MySQL в пользу PostgreSQL (если конечно вы не работаете с ораклами какими, в mysql все плохо с автоинкрементами, что накладывает определенные ограничения при работе с Doctrine и заставляет писать кучу лишнего бойлерплейта что бы все было красиво, хотя этот бойлерплейт можно реюзать).

    По сути единственная разница между приложениями на Laravel и Symfony - ORM идущая из коробки (как бы все можно подменить под себя). Все остальное - минимальные различия. А с нормальным ORM (а в PHP мире она пока одна - Doctrine) уже можно делать дела красиво и эффективно с точки зрения трудозатрат. Но даже с ActiveRecord можно жить и не тужить.

    Словом, я не знаю что вы хотите получить от Symfony, по сути переход с одного фреймворка на другой вам мало чего даст.

    Прочитал много мнений о том что Laravel намного быстрее работает чем Symfony.

    Вот этот параметр просто не учитывайте. Как минимум Laravel основан на компонентах Symfony и единственное узкое место, которое явно работает медленнее это Doctrine ORM, но та гибкость которую она дает слихвой оправдывает прожерливость. Да и смысл вообще по этому поводу загоняться этом есть только на больших нагрузках, а так вы с большей вероятностью убьете производительность не расставив где надо индексы в базе.

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

    А правильного нет. Каждый сам свой путь выбирает. Хотите развиваться? Читайте книги. Кента Бэка почитайте, Эрика Эванса и других персонажей... Расширяйте кругозор, а далее что понравится. А да, не ограничивайтесь книгами только для программистов. Почитайте чего по процессам разработки (чего-нибудь про скрамы, канбаны, лины, континиус импрувмент).
    Ответ написан
    4 комментария
  • Как вызвать EntityManager в контроллере, который определен как сервис?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сейчас понадобилось некоторые методы в контроллере использовать повторно

    Поздравляю, вы на пути к application level сервисам и тонким контроллерам.

    вместо того что бы делать контроллеры как сервисы - просто делайте сервисы и проблем не будет.

    А примеры там есть: symfony.com/doc/current/book/service_container.html - почитайте.
    Ответ написан
    2 комментария
  • Symfony 2 Авторизация по API?

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

    Для авторизации вы сами можете определить как забирать пользователя из юзер провайдера.

    В целом же, если внешнее API было бы вашим, я бы рекомендовал использовать oauth2.
    Ответ написан
    Комментировать
  • [Silex] Где разместить Provider?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну вот пишите вы какой-то компонент, и бац, у вас появляется нэймспейс с этим компонентом. А потом пишите вы такой провайдер, а он так бац и в неймспейсе компонента, для которого вы это дело пишите. Или у вас просто есть нэймспейс Provider.... Ну думаю вы меня поняли. Если у вас там провайдеров слишком много - стоит тогда подумать почему так.
    Ответ написан
  • Подключение зависимостей вендорного бандла в Symfony2 автоматически?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у бандла есть зависимости от других бандлов - скорее всего что-то пошло не так. Если таких зависимостей много, то что-то явно пошло не так.

    Бандлы должны быть самодостаточными и зависеть могут разве что от библиотек. Иногда конечно приходится делать их зависимыми от бандлов, но обычно это один бандл а не десяток.

    то подключал зависимые бандлы в app/AppKernel.php (все 10 штук).

    так и напишите в инструкции.
    Ответ написан
    3 комментария
  • Как получить доступ к сессиям в шаблоне(twig) symfony2?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можно, но зачем? Передавайте все явно и проблем будет меньше.
    Ответ написан
    6 комментариев