Aug 11 2008

Проблема при использовании sfWidgetFormPropelSelect от плагина sfPropelPlugin

Category: SymfonyIgor @ 15:47

sfPropelPlugin это плагин для работы с Propel 1.3. Текущая версия 1.3.0 stable от 28/05/2008. Наткнулся на проблему при использовании виджета sfWidgetFormPropelSelect. Если указать порядок сортировки, то получаем ошибку на экран.


Например, имеем форму со следующий кодом:

class BaseNewsForm extends BaseFormPropel
{
  public function setup()
  {
    $this->setWidgets(array(
      'news_id'        => new sfWidgetFormInputHidden(),
      'category_id'        => new sfWidgetFormPropelSelect(array('model' => 'NewsCategory',
                                    'method' => 'getName', 'order_by' => array('Name', 'asc'))),
      'title'       => new sfWidgetFormInput()
    ));

Сортировка по полю “Name” не получиться, т.к. есть баг в коде. Плагин давно не обновляли, но в репозитории есть свежий код, и эта проблема решена, чтобы получить плагин из SVN, выполните следующую команду:

svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/ .

Учтите все это делаете на свой страх и риск, т.к. это не релиз.

Кстати, если не переназначить опцию “method” своим методом, то по умолчанию будет использоваться метод __toString, которого нет в сгенерированных формах. В этом случае получим на экран сообщение об ошибке

Class "NewsCategory" must implement a "__toString" method to be rendered in a "sfWidgetFormPropelSelect" widget

Альтернативным решением будет добавление метода __toString в NewsCategory.php

  function __toString()
  {
    return $this->getName();
  }

Tags: , ,