:-)
  • Я уже писал о написании игр с помощью SDL на Python (pygame), хотя, до продолжения у меня руки не дошли, к сожалению. Тем не менее, я так же хочу написать, как я подключал SDL библиотеку для разработки на С++ в моей разлюбимой IDE NetBeans. Причины для выбора NetBeans довольно забавные: у меня не хватало места на диске для установки Visual Studio, а NetBeans уже был и с ним я неплохо знаком. Сначала я думал, что достаточно будет скачать CDT (С Developer Tools) и вперед, но все не так просто оказалось.

    Читать дальше...

    Tags: , ,

  • Я часто сталкивался с необходимостью указать путь к своему экшену, например в link_to. До какого-то времени для меня вполне работал вариант 'module/action?parameter=value'. Однако, в один прекрасный день, количество таких ссылок возросло до нескольких сотен на странице. И они порядком тормозили, потому что роутингу приходилось проверять все указанные роуты, перед тем как использовать default. Решением в таких случаях являются именованные роуты, например '@users'. Но вот вопрос, как сделать именованный роут для админ генеренного модуля. Для таких модулей, добавляется DoctrineRouteCollection роут, который на самом деле генерит 7 роутов module_new, module_list и т.д.

    Ну и вот мы делаем такой финт ушами:

    modules:
      class: sfDoctrineRouteCollection
      options:
        model:                modules
        module:               modules
        prefix_path:          /modules
        column:               module_id
        with_wildcard_routes: true
        object_actions:       { action1: GET, action2: GET }
      requirements:
        module_id:        \d+

    В сгенеренный роут я добавил параметр object_action, после чего этот роут будет так же генерить роуты @modules_action1 и @modules_action2, что нам собственно и нужно. А GET - это тип запроса, на который будет отзываться новоделанный роут.

    Tags: ,

  • Как, наверное, некоторые из вас знают, 8 октября прошла конференция Symfony Day 2010 в Кёльне, на которой мне посчастливилось присутствовать. Я случайно наткнулся на сайт, http://www.symfonyday.com/, и сразу же решил, что хочу туда. Вход стоил 120 евро, но я успел как early bird за 80. Путь мой начинался с самой восточной границы Германии Читать дальше...

    Tags:

  • Наверняка многие имеют некие иерархические данные в своем проекте, будь то категории с подкатегориями, страницы с подстраницами и все такое прочее. Как подобные объекты выводятся пользователю? Обычно с помощью роута типа /category/1, или /page/28, где число - это id объекта, или даже /page/delivery, где используется slug. Но все это не отражает иерархичность наших данных. Иногда же хочется /page/delivery/small-items и /page/delivery/large-items. Никто не мешает сделать дополнительный роут с двумя слагами, но ведь их может быть не два, а три, и не три, а пять.
    Читать дальше...

    Tags: , ,

  • Кратко о том, как сделать фильтр для админ генератора. В моем проекте используется Doctrine с поведением NestedSet, и фильтр мне нужен был по родительскому полю. Точнее, показать потомков выбранного элемента. Для этого я пошел в папку /lib/filters и открыл файл фильтров для нужной модели. Там будем править метод configure. В моем случае дело происходит в плагине, поэтому метод, который я буду править называется setupInheritance.
    Читать дальше...

    Tags: , ,

  • Потребовалось мне сделать optgroup в виджете choice, и не просто так, а с условием. Если у объекта есть дочерние элементы - то он становится optgroup, а иначе его можно выбрать. За основу я взял sfWidgetFormDoctrineChoiceNestedSet, который можно взять из плагина sfDoctrineNestedSetPlugin. Я скопировал код, добавил в запрос условие:

    $query->addWhere('level = ?', 0);

    Это потому, что все, что ниже уровнем мы будем получать через getChildren. Иначе нам пришлось бы двигать итератор Doctrine_Collection, что более сложно, заумно, и вовсе у меня не получилось (next($objects) почему-то не дает эффекта).
    Сделать optgroup в choice совсем несложно, надо лишь сделать элемент массивом. Ну а что получилось собственно внутри поста.
    Читать дальше...

    Tags: , , ,

  • Бывает, что находишь какое-то решение в Гугле, а потом когда я сталкиваешься с похожей ситуацией - второй раз уже не можешь найти. Поэтому я буду записывать моменты, которые мне были полезны и могут понадобиться еще, будет что-то вроде рубрики Symfony tips.

    Как вообще убрать фильтры в admin generator?

    config:
      filter:
        class: false

    Как повесить иконку своему кастомному object_action?

    #sf_admin_container ul li.sf_admin_action_##ACTION_NAME## a
    {
      background: url(/images/icons/icon.png) no-repeat 0 0;
    }

    Как недопустить ввода пустой строки в админке?

    public function configure() {
        $this->validatorSchema['name']->setOption('trim', true);
    }

    Fatal error: Call to undefined function include_component()
    Вы, скорее всего, указали в settings.yml standart_helpers, и забыли добавить в список Partial.

    all: 
      .settings: 
        standard_helpers:       [I18N, Partial]

    Tags: , ,

  • Czechia18 июня исполнился год с момента нашей свадьбы, и это событие мы решили отметить поездкой в Чехию. Ехали, конечно же, в Прагу. В планах было посмотреть старый город, Влтаву (река, на которой стоит Прага), мосты, покушать чешской еды и попробовать чешское пиво в самой Чехии. И сейчас я вам расскажу как это было.
    Читать дальше...

    Tags:

  • Мне потребовалось сделать мультиязычный сайт аж на 5 языках. В целом тут нет ничего сложного, кроме того, что пользователю надо будет заполнять 5 форм на разных языках. Логичный вывод - сделать обязательным только один язык, например английский. Остальные заполняются по желанию, а для незаполненных показывается на том же английском. Промучившись некоторое время с рецептами от Календаря Адвента, и не добившись успеха, я нашел пост [Optional translation form for I18n objects with Symfony and Doctrine], который мне помог. Я считаю, что полезным будет сделать его перевод. Так же я добавлю некоторые свои комментарии. (Перевод вольный, эстеты идут лесом) Читать дальше...

    Tags: , , ,

  • Когда речь идет о Германии, очень часто всплывает восхищение немецкими железными дорогами, мол быстро, комфортно. На картинках красивые поезда, довольные немецкие лица. И знаете что я скажу.. чистая правда! РЖД против DB, это как запорожец против мерседеса.

    Читать дальше...

    Tags: ,