:-)
  • Потребовалось мне сделать 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: , ,

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

    Tags: , , ,

  • Python 27.04.2010 No Comments

    В этом блоге почти все время я писал о PHP и немного о JS. Настало время разнообразить, и разнообразить свой блог я решил Питоном. О том, где взять Python и где поучиться я не буду, материалов полно, и большинство друг друга повторяют, в еще одном от меня смысла я не вижу. Чуть меньше примеров и статей про PyGame - свободную графическую библиотеку, базирующуюся на SDL.

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

    Tags: , ,

  • PHP 05.02.2010 2 Comments

    Я уже давно обещал выложить исходные коды судоку (поиграйте в судоку, если еще не играли). Я думал, что со временем исправлю код, сделаю лучше, но нет ни времени, ни желания. Поэтому лучше я выложу как есть, а вы уж сами улучшайте. Посмотреть код. Далее в посте будут комментарии. Читать дальше...

    Tags: , ,

  • *nix, PHP 05.02.2010 2 Comments

    Я надеюсь что вы уже прочитали вводную статью про многопоточность в PHP, или вам это просто не требуется. Теперь я расскажу про счетчик, который будет доступен для потоков приложения, при этом доступ к нему будет эксклюзивным.

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

    Tags: , , , ,

  • *nix, PHP 05.02.2010 No Comments

    Хочу рассказать вам про многопоточные приложения, взаимодействие процессов (IPC) и применение всего этого на PHP. В качестве примера мы возьмем счетчик с эксклюзивным доступом, доступный для всех процессов.

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

    Tags: , , ,

  • JS 04.02.2010 24 Comments

    Я уже писал про создание модальных окон на jQuery с помощью Simplemodal, на этот раз я решил попробовать другой плагин и нашел для себя blockUI. Он потребует jQuery версии не ниже 1.2.3. Итак приступим. Читать дальше...

    Tags: , , ,

  • SQL 29.01.2010 No Comments

    Если у вас возникают ошибки при работе с SQLite, то вот у меня пара решений.

    Если у вас ошибка "Unable to open database file" и при этом база читается, даже если вы дали права файлу БД 0777, то вам еще надо дать права на запись папке, в которой лежит файл. Дело в том, что при открытии транзакции пишется файл dbfilename-journal. Так же под Windows эта проблема может означать наличие кириллических символов в пути к базе.

    Если вы по привычке написали ON DUPLICATE KEY UPDATE ..., и не понимаете в чем ошибка - обратитесь к официальному мануалу и просто измените INSERT на REPLACE, а "ON DUPLICATE..." сотрите.

    Tags: ,

  • *nix, PHP, SQL 21.01.2010 No Comments

    Такая ошибка возникла у меня после перехода на PHP 5.3. Решение я нашел на http://stackoverflow.com, можете там посмотреть, чтобы узнать про эту ошибку более подробно. Выглядит она вот так:

    Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
    via unix://) in /home/blah-blah-blah.php on line 9
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
    Invalid argument' in /home/blah-blah-blah.php:9 Stack trace: #0
    /home/blah-blah-blah.php(9): PDO->__construct('mysql:host=localhost;dbname=db', 'USER', 
    'PASSWORD') #1 {main} thrown in /home/blah-blah-blah.php on line 9

    Решается она так: вместо localhost, при написании DSN для PDO пишите 127.0.0.1. А так же стоит указать путь к сокету MySQL в php.ini: pdo_mysql.default_socket=/var/run/mysqld/mysql.sock

    Tags: , , ,