• Symfony2 и мобильные устройства?

    @shoomyst
    dumb
    Можно посмотреть https://github.com/suncat2000/MobileDetectBundle
    Ответ написан
    Комментировать
  • Почему не передается Container в конструктор?

    @shoomyst
    dumb
    В arguments не нужны кавычки, как для сервисов, так и для параметров
    Ответ написан
  • Что учить после PHP?

    @shoomyst
    dumb
    Если вы хотите развиваться как программист, первое что стоит почитать - это основы алгоритмизации, которые закладывают базу разработчика, чего у вас судя по всему нет: поскольку многие считают, что это сегодня никому уже не надо. Языки это уже вторично: Js/Python/Ruby/Java/Go/Rust - если есть время, можно каждый глянуть по 2-4 недели на язык.
    Ответ написан
    Комментировать
  • Можно ли наследовать роутинги в Symfony?

    @shoomyst
    dumb
    В php-конфигах можно использовать общие переменные.
    Также можно попробовать в аннотациях выделить похожие роуты в отдельный класс и задать общие параметры в аннотациях класса, а специфические доопределять через аннотации методов.

    Edit: Для xml и yml можно попробовать подколлекции:

    main.yml
    _sub:
        resource: "@AcmeDemoBundle/Resources/config/sub.yml"
        prefix:   /
        defaults: { _controller: AcmeDemoBundle:Main:index, param1:1, param2:2, param3:3 }

    sub.yml
    route_one:
        pattern:  /r1
        defaults: { param4:4 }
    	
    route_two:
        pattern:  /r2
        defaults: { param4:5 }
    Ответ написан
  • Symfony2 ajax qjuery и юнит тест?

    @shoomyst
    dumb
    Symfony из коробки не умеет ajax. Тут надо смотреть куда-то в сторону других инструментов типа Mink или casperjs.
    Ответ написан
    Комментировать
  • Есть ли методо как DateTime->add() только не изменющий сам DateTime?

    @shoomyst
    dumb
    Ответ написан
    Комментировать
  • Как сохранить список get переменных в url при добавлении page= ?

    @shoomyst
    dumb
    Мало информации вы предоставили. Где хранятся остальные параметры (для фильтрации)? Почему вы их не указываете в урле?
    Вообще вам нужен Paginator и/или UrlGenerator.

    Если самопал какой-то, то надо передавать в твиг остальные параметры и добавлять их в урл:
    <a href="?category_id={{category_id}}&page={{page}}">

    Но это конечно попахивает уже
    Ответ написан
    Комментировать
  • Как лучше создать структуру бд?

    @shoomyst
    dumb
    Правильнее так: отдельные таблицы для сущностей + языковые таблицы для них.
    Например: products + products_i18n
    В первой все поля, которые не зависят от языка, в i18n - соответственно, все зависящие (обычно текстовые) от языка.
    products: id, category_id
    products_i18n: product_id, language_id, title
    Ответ написан
    Комментировать
  • Как защитить голосование от подмены сессии?

    @shoomyst
    dumb
    Да ничто вам не поможет. Если кто-то захочет накрутить голосование, он это сделает, чтобы вы там не изобретали. Единственный более-менее вариант это привязка к IP, т.к. его теоретически сложнее всего менять, все остальные значения легко подделываются в запросах.
    Просто посмотрите на все заголовки и параметры в запросе и подумайте, насколько легко менять тот или иной, чтобы пользователь выглядел как новый/старый
    Ответ написан
    Комментировать
  • Как создать и хранить уникальный идентификатор заказа?

    @shoomyst
    dumb
    Сейчас пока склоняюсь к генерации 9-значного числа без 0 и хранении его как INT, но сами понимаете, что это смех смехом.

    Почему? Можно вообще сделать число из диапазона 1000-9999. Или вы думаете, что кому-то понадобится перебирать 9к вариантов? Храните этот секретный код в базе с привязкой к id счета. И потом проверяете связку id+secret
    Ответ написан
  • Как правильно работать с коллекциями doctrine в symfony2?

    @shoomyst
    dumb
    Можно в контроллере (плохо), в сервисе (чуть лучше), в entity (как в yii), в твиге (хорошо)
    Ответ написан
  • Давайте поговорим о sql_mode в MySQL?

    @shoomyst Автор вопроса
    dumb
    Пока остановаюсь на таком режиме:
    • STRICT_TRANS_TABLES
    • IGNORE_SPACE
    • NO_AUTO_CREATE_USER
    • NO_ENGINE_SUBSTITUTION
    • ONLY_FULL_GROUP_BY
    • PIPES_AS_CONCAT
    Ответ написан
    Комментировать
  • Есть ли потребность в социальной сети для студенчества и вообще обучения?

    @shoomyst
    dumb
    Был уже: instudies.com
    Если у вас куча свободного времени и вы делаете в том числе для себя, можете попробовать. Коммерчески проект провалится в виду неплатежеспособности целевой аудитории.
    Можете попросить у ребят перевести проект в open source и совместно его развивать.
    Ответ написан
    2 комментария
  • Как сформировать определенный формат данные из mysql в php ?

    @shoomyst
    dumb
    Непонятно, откуда взялся Париж)
    В mysql GROUP + GROUP_CONCAT. Расставить кавычки и склеить лучше в php
    Ответ написан
    1 комментарий
  • Выбор фреймворка Symfony2/Laravel/etc?

    @shoomyst
    dumb
    Если нет проблем с английским, можно попробовать Laravel: на русском не так много материалов по нему в виду малой популярности у нас. Если проблемы есть, возможно стоить посмотреть на yii2.
    Symfony это уже немного другой уровень. (Быдло-)Кодить на нём может в принципе любой, но чтобы проникнуться им и его гибкостью, нужно к этому еще прийти.
    Ответ написан
    Комментировать
  • Как сделать экпорт в кодировке utf8 из большой БД MySQL с помощью mysqldump?

    @shoomyst
    dumb
    Из графических советую попробовать Sypex Dumper.
    Я понятия не имею, как он работает, но всегда поражаюсь, как веб-приложение может обрабатывать такие объемы данных, где тот же SQLYog виснет.
    Ответ написан
    2 комментария
  • Чем можно заменить встроенный opcache в php 5.5?

    @shoomyst
    dumb
    Можно XCache попробовать.
    Но лучше разобраться с OPCache, поиграть с его настройками и зарепортить баг
    Ответ написан
    1 комментарий
  • Symfony 2 - Куда класть и как подключать css/js?

    @shoomyst
    dumb
    Можно поиграться с ассетиком, но лучше сразу смотреть в сторону bower/grunt/gulp
    Ответ написан
    Комментировать
  • Как разобраться в философии symfony2?

    @shoomyst
    dumb
    Symfony это конструктор, который поставляется в собранном виде. Но ничто не мешает вам его разобрать и собрать по-своему. Многие критикуют фреймворк за это качество: нет ощущения целостности как у Yii или Laravel. Похожее говорили в свое время про Zend1: монстр, куча несвязанных компонент, лучше я буду кодить в своем уютном CodeIgniter-e.

    Symfony Framework - это (грубо) HttpKernel + DependencyInjection Container (DIC) + EventDispatcher.

    Главное задачей HttpKernel является конвертирование Request в Response. Для этого он загружает и инициализируется бандлы, создает контейнер (DIC), пытается по Request определить контроллер, выполнить его и убедиться, что результат выполенения контроллера является объектом Response, если нет, то пытается преобразовать результат в Response.

    DIC занимается созданием и хранением сервисов, если совсем грубо, то это такой навороченный Registry.

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

    Бандлы лучше всего сравнить с плагинами. Есть ядро, которое было описано выше, а бандлы это плагины для него, добавляющие некий функционал (FrameworkBundle, TwigBundle, MonologBundle). FrameworkBundle это основной плагин, который добавляет основной функционал: формы, валидация, сессии, translations. При желании его тоже можно заменить как и любой другой. Другой задачей бандлов является интеграция различных библиотек в ваш проект: twig, monolog, swiftmailer (поставляются с симфони), sphinx, elastic и т.д. Ну и логика приложения так же может быть размещена в бандлах.

    Чтобы Symfony узнал про ваш бандл, его необходимо зарегистрировать в AppKernel.

    У каждого бандла есть своя конфигурация, с помощью которой он может интегрироваться в Symfony:
    1. Регистрация своих сервисов в DIC. Далее вы можете использовать их, например, в контроллере: $container->get('sphinx.search')->query(...)
    2. Бандл может повесить свои сервисы на какие-то события. Например, на событие KernelEvents::CONTROLLER, тогда ваш бандл получит управление при подборе контроллера и вы сможете обойти штатный механизм подбора и вернуть свой, который и будет выполнен.
    3. Использование тегов. Например, вы создали класс HelloWorldViewHelper и хотите его подключить в Templating. В конфигурации указываете для него тег "templating.helper" и он будет подхвачен Symfony и встроен в шаблонизатор.
    Ответ написан
    6 комментариев