Задать вопрос
  • Symfony - Repository Как избежать двойного кода в этом случае?

    Maksclub
    @Maksclub
    maksfedorov.ru
    flush() нужно вынести, потому что вы можете заперсистить 100 объектов и сделать один flush — одна череда обращений к Бд. В вашем же случае будет 100 и более обращений к БД

    Чтобы сделать универсальный метод для персиста в репозиториях, раз уж вы решили так делать (многие считают это верным) — можно сделать универсальный код (трейт к примеру), в котором будет проверка через classMetadata, что сохраняемый объект нужного типа для репозитория (тут не забываем про наследование сущностей, is_a()и вот это все) и если придет не тот объект — кидать InvalidArgumentException

    НО! Если вы репозитории размещаете в своем домене/пакете/неймпсейсе, то вам не избежать дублирования кода, и это не так уж и страшно... Связанность и паутина наследований страшнее. Репозиториев все равно мало во всем коде относительно всей базы кодовой.
    Ответ написан
    2 комментария
  • Зачем нужен fosrestbundle в symfony?

    @Flying
    FOSRestBundle упрощает создание REST endpoints, преобразовывая имена методов в роуты + беря на себя ещё ряд базовых функций по упрощению создания REST API на Symfony. К примеру вам ведь нужно выдавать нормальные ответы в случае ошибок и exceptions, а ошибки, они ведь очень разные бывают. Неприятно когда у тебя вроде бы REST API, а он вдруг начинает HTML рендерить.

    В целом, безусловно, всё это можно сделать и руками, но по сути в итоге что-то близкое и получится, ну может кроме роутинга.

    В целом FOSRestBundle не особо большой, в экосистеме Symfony есть гораздо более мощные решения для создания API
    Ответ написан
  • Как исправить ошибку 500, при загрузки сайта на Symfony?

    FoxCloud
    @FoxCloud
    Хостинг и облачные сервисы
    Здравствуйте!
    Для того, чтобы исправить 500 ошибку на сайте, сделайте следующее (от простого к сложному):

    1. Вспомните, что вы делали недавно на сайте и верните все как было.
    2. Восстановите сайт из резервной копии от числа, когда сайт ещё работал. Начните с восстановления файлов. Чаще всего это мжно сделать несколькими кликами в хостинг панели.
    3. Смените версию PHP для сайта. Попробуйте несколько версий. Если не поможет - верните на PHP версию, которая была.
    4. Убедитесь, что на хостинг аккаунте есть сводоное место любым знакомым вам способом.
    5. Обратитесь к хостинг компании за помощью. Иногда хостеры помагают с подобными проблемами на бесплатной основе.

    Сложнее:
    6. Проверьте логи на наличие ошибок. Логи можно найти в нескольких местах:
    1. Логи сервера, часто их можно найти:
    - в корне сайте, файл /error.log (CPANEL панель)
    - В директории /logs/Ваш_сайт.error.log (Панель ISPmanager5)

    2. Логи symphony
    Зайдите в корень сайта, а потом в /var/log/
    Там вы найдете логи.
    Проанализируйте логи, они наведут вас на проблему.

    7. Включите дебаг syphony.
    Инстуркция по ссылке: https://symfony.com/doc/4.2/components/debug.html

    И второй вариант - обратиться в тех-поддержку хостера. Обычно они помогают с установкой сайта.
    Ответ написан
    Комментировать
  • Где делать редирект?

    mad_maximus
    @mad_maximus
    $event->setResponse(new RedirectResponse(...));
    Ответ написан
    Комментировать
  • Как сделать Calc элементы в sass с переменными?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    $h: percentage(1/3);
    width: calc(#{$h}  - 1px);
    Ответ написан
    5 комментариев
  • Почему IE11 не видит svg спрайт?

    vadimkot
    @vadimkot Куратор тега CSS
    Чтобы была поддержка в IE svg спрайта из внешнего файла нужно использовать полифилы https://github.com/jonathantneal/svg4everybody или https://github.com/Keyamoon/svgxuse
    Ответ написан
    Комментировать
  • Symfony - разделение на backend и frontend?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    1. Отдельными приложениями.
    2. Папками в проекте.
    Ответ написан
    Комментировать
  • Symfony - в чём разница между listener и subscriber, и что означает теговать (tags)?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Listener — слушатель одного или более событий, некий такой атомарный исполнитель. Не знает на что он подписан, но легко управляется через конфигурацию. Если разные слушает — нужно самому логику разделения обработки писать.
    Subscriber — подписчик имеет реализацию интерфейса SubscriberInterface с методом getSubscribedEvents(), то есть сам объект слушателя знает, на что он подписан и какие методы какие события будут отрабатывать

    По сути одно и тоже, но такая разница иногда пригождается. Иногда нужно иметь контроль снаружи, иногда наоборот.

    Теги — отдельный механизм контейнера. Проставляя тег на набор сервисов — мы во время компиляции контейнера можем достать помеченные определенным тегом сервисы и заинжектить в др сервис (очень часто используется мной например), отсортировать по допатрибутам или сделать любую иную логику
    https://symfony.com/doc/current/service_container/...
    Ну например есть десяток сервисов, которые обрабывают каждый свой тип файла, еще и лежат в разных бандлах. Как получить их в одной фабрике? Правильно — проставить им тег, в компиляторе приложения достать все и в фабрику засунуть. При появлении нового сервиса с тегом - он автоматом будет в фабрике.

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

    Matmode
    @Matmode
    PHP/Symfony Developer
    В начальном варианте Вы пытаетесь встроить форму, а не наследовать её. В этом случае поля были бы доступны для вывода так: form.commonFields.titleLink.

    Вашу задачу наследования решает именно второй вариант
    Ответ написан
    3 комментария
  • Существует ли аналог RBAC Yii2 в Symfony?

    @HellWalk Автор вопроса
    Итак, поразбирался-покопался сам - для симфони есть Sonata - несколько больших бандлов для создания админки. В том числе там есть функционал схожий с RBAC.

    Но само решение спорное:
    1. Sonata слабо развивается, и выглядит брошенной
    2. Чем сложнее становится логика в проекте - тем меньше помогают (и начинают мешать) решения из коробки
    3. Сами разработчики Симфони рекомендуют использовать Voters

    Вот такие дела.

    P.S. Официальная документация по Sonata устарела, и по ней её не поставить. Мне помогло это руководство с хабра.
    Ответ написан
    Комментировать
  • Как сделать пагинацию через ссылку в Symfony?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    @Route("/products/{limit}/{offset}", name="products"), а дальше вытягиваете limit/offset из $request->attributes
    Ответ написан
    5 комментариев
  • Логика в ларавеле пишеться в контроллерах?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    То, что весь код может писаться в только контроллерах, моделях и вьюхах и больше нигде, потому что мы пишем MVC (а что ещё бывает ?) - это заблуждение, от которого надо избавляться как можно быстрее. Потому что код по большому счёту нельзя писать ни в моделях, ни в контроллерах, ни во вьюхах - ему там не место. Код надо писать в php-классах, которые потом подключать в контроллеры, файлы обработки cli-команд, команды, выполняемые в очереди, в файлы-демоны и т.п.. Код должен выдерживать процедуру смена php-фреймворка просто путём копирования всех файлов и правки классов-репозиториев и других классов сопряжения с конкретным фреймворком. Если ваш код намертво спаян с текущим фреймворком - это признак того, что что-то пошло не так.

    Создавайте внутри папки app свои папки, раскладывайте там классы и подключайте их в конструкторе контроллеров. Почитайте, какие бывают типы классов с точки зрения архитектуры приложения, почитайте про принцип SOLID. Почитайте про Domain Driven Design, погуглите доклады, например https://www.youtube.com/watch?v=rjtbCyacJas .
    Учёба - это постоянный процесс, не останавливайтесь.
    Ответ написан
    Комментировать
  • Как правильно делать оптимизацию чтобы сайт моментально загружался?

    coderisimo
    @coderisimo Куратор тега JavaScript
    Вот отличный ресурс :

    начните с этого

    там вообще, много полезной информации
    Ответ написан
    Комментировать
  • Каким путем лучше пойти начинающему web-разработчику?

        Привет!
        Про возраст - забей париться и никого не слушай на тему того кто и кем должен быть во столько и столько.
    Я работал в одной крупной конторе и однажды к нам пришел мужичок лет за 40 на джуна. С нуля. В команду 20-30 летних. Ему было сложно вписаться в коллектив, но никто его не троллил, не избегал и т.д. Ему захотелось попробовать что-то новое и все получилось отлично. Стартанул он очень хорошо и за год с небольшим добрался до тим-лида. Если есть желание и интерес - все получится. За бугром люди и 40 и в 50 легко приходят в новую профессию. Это у нас есть такой стереотип, что после 30 ты нафиг никому не нужен. Вздор.
        Лично я тоже пришел в айти сферу в 27, и ушел в веб разработку. Full-Stack PHP Developer себя называю. Тоже есть пунктик "учиться учиться учиться". Поэтому. Просто учиться - бестолку. Это тоже самое, что в сериалы смотреть или в игры играть. Времяпровождение. Интересно - да, полезно - совсем чуть-чуть, сделает ли программистом - нет. Без практики все вылетает из головы довольно быстро. В голове остается лишь знание "ага, это по силам понять, я как-то врубался в это уже, но что-то нифига не помню...." =)
        Очень вводят заблуждения все эти высказывания о том, что надо учить и что должен знать программист в определенном возрасте, на определенной ступени профессионализма и т.д. 99% - тоже вздор =) Зачем нужно знать паттерны программирования? Чтоб выбрать хорошее решение при проектировании сложного кода, например. А будешь ли ты этим заниматься вообще? Для того, чтоб делать сайты, при чем довольно сложные, вполне достаточно въехать что такое MVC, и использовать какой-нибудь популярный фреймворк. Надо ли знать алгоритмы? Тоже зависит от рода деятельности. Мне за почти 10 лет веб-дева это знание ни разу не пригодилось, хотя работал над реально оч. большими и тяжелыми проектами. Есть люди, которые удачно продают себя на апворке за $50-60 в час называя себя веб-программистами и специализируясь исключительно на Вордпрессе. То есть по факту не кодят, а собирают сайты из конструктора, допиливая темплейты из html/css/php ( минимум php ).
        Очень важно найти свою специализацию. Что больше нравится - backend или frontend и найти удобные и комфортные для себя инструменты. Если бэкэнд - именно PHP - попробовать Laravel, Yii2, Symfony. Почувстовать что твое, что комфортно. Если фронт - пощупать Vue, Angular, React. Стоит выбрать "свой" инструмент и прокачиваться в нем. Маленькая заметка на тему PHP. Есть гораздо более удобные языки для разработки. "Голый" PHP - это для фанатиков. Сейчас современный PHP - это уже конструктор, где приложение собирается из чужих пакетов. Но самому с нуля на нем что-то делать - не очень =) Попробуй Python для бэкэнда для сравнения ( Django или Flask ). Совсем другое ощущение от разработки. Если бы я раньше попробовал, то за PHP не брался бы. Но на фрилансе заказов на PHP все же сильно больше. Python еще хорош тем, что сфер применения намного больше. Еще варианты для бэка - Ruby (RoR), Go набирает популярность, Java, C# и т.д. Выбирать следует из того, куда больше тянет - в офисную работу или во фриланс, я считаю.
        Очень важно поработать в команде. В замкнутой среде не с чем сравнить свои успехи, не у кого подсмотреть реальные рабочие решения и т.д. Всегда будет оставаться какая-то не уверенность - а что если мое решение не хорошее? Насколько я профи? Работа в команде быстро показывает, что идеальных кодеров нет и каждое решение хорошо в определенных ситуациях.

    Разошелся =) Мог бы еще накатать, но и так уже слишком много букв и пора мне в оффлайн =)
    Удачи, все получится.
    Ответ написан
    2 комментария
  • Может кто помочь с яндекс картой и JS?

    deepblack
    @deepblack
    1.
    $(window).resize(function () {
      if ($(window).width() < 576) {
        myMap.setCenter([57.767265, 40.925358]);
      }
    });


    2.
    function myFunction(x) {
      if (x.matches) { // If media query matches
        myMap.setCenter([57.767265, 40.925358]);
      } 
    }
    
    var x = window.matchMedia("(max-width: 576px)")
    myFunction(x) // Call listener function at run time
    x.addListener(myFunction) // Attach listener function on state changes
    Ответ написан
    2 комментария
  • Есть ли хороший проект на symfony 3/4 для обучения?

    @ArthurAm
    Могу копать, могу не копать
    Есть демо проект с набором best practies от авторов Symfony

    https://github.com/symfony/demo
    Ответ написан
  • Какие шаблоны проектирования js применяются на практике чаще всего?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    какие паттерны применяются чаще всего на практике и где

    Сразу отмечу, что все это чисто мое имхо, которое может не совпадать с мнением окружающих. В контексте фронтенда обычно все довольно просто. По моим наблюдениям в среднем сайте могут иметь смысл:
    1. Модули (делим код на независимые части)
    2. Фабрики (для компонентов интерфейса)
    3. Синглтоны (для хранилищ, точек сбора полифиллов / утилит и.т.д.)
    4. Адаптеры (для зависимостей и полифилов, которые могут измениться / выпилиться)
    5. Наблюдатели (для сбора происходящих событий в одном месте)
    6. Хранители (для сохранения действий пользователя и "Ctrl-Z")
    7. Стратегии (если действуем в зависимости от прилетевших данных)

    Другим паттернам применение вижу редко, только если под какую-то замороченную бизнес-логику. Хотя кого я обманываю, на среднем сайте обычно происходит только один паттерн - доширак из костылей. Ну и стоит сказать, что SPA-фреймворки имеют свойство навязывать свои подходы к решению задач, но это отдельная тема.

    Важно понимать, что паттерны проектирования - это просто хорошие идеи по поводу того, как организовать большой объем кода в той или иной ситуации. Это не "изучи тайное знание, запомни, и делай так всегда", не "используй паттерны, потому что великие их используют", это скорее "если не уверен как организовать код, возьми готовую идею, она вроде работает". Если вы будете просто решать задачи, то через N лет практики вы сами их все "изобретете", только не будете знать, что у них есть названия. Эффективно будет организовать себе заметку о том, какие из этих идей для чего примерно применяют, а потом, в процессе работы, в нее подглядывать, если встал вопрос "как организовать этот код".
    Ответ написан
    7 комментариев
  • Какие шаблоны проектирования js применяются на практике чаще всего?

    Jeer
    @Jeer
    уверенный пользователь
    Паттерны... пользуешься-пользуешься и не знаешь, что у всего этого есть названия.
    Паттерны не привязаны к конкретному языку (но в разных языках реализуются по разному)
    Есть отличный сайтец с картинками, всем его рекомендую https://refactoring.guru/ru
    Ответ написан
    Комментировать
  • Какой самый производительный js слайдер?

    Stalker_RED
    @Stalker_RED
    Можно вырубать слайдеры, которые за пределами вьюпорта.
    Для проверки можно использовать Intersection Observer (есть полифилл)
    Ответ написан
    Комментировать