Изменение фильтров от выбора до простого ввода - PullRequest
1 голос
/ 26 марта 2012

в моих формах фильтра я хочу изменить значение по умолчанию sfWidgetDoctrineChoice на простое sfWidgetFormFilterInput. Для реляционных полей (например, UserForm имеет поле PhoneNumberListId).

Какова цель?

=> Когда у вас много реляционных данных, symfony (точнее, виджет DoctrineFormChoice) будет отображать элемент select, содержащий все (!) Возможные отношения, вызывая сайт врезаться.

Пример, чтобы зажечь вещи:

Таблицы: Пользователь, PhonenumberList Форма: UserFilterForm

По сути, мы бы имели этот код в UserFilterForm:

$this->setWidgets(array(
'phonenumber_list_id' => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('PhonenumberList'), 'add_empty' => true))));

Я изменяю это на:

$this->setWidget('phonenumber_list_id', new sfWidgetFormFilterInput(array('with_empty' => false)));
        $this->setValidator('phonenumber_list_id', new sfValidatorSchemaFilter('text', new sfValidatorNumber(array('required' => false))));

Как это влияет на визуализацию формы?

Ранее выберите:

<select name="user_filters[phonenumber_list_id]">

Изменится на:

<input name="user_filters[phonenumber_list_id][text]" >

Который я вызвал следующую (для меня необъяснимую) ошибку / исключение:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
at Doctrine_Connection->execute('SELECT COUNT(*) AS num_results FROM receipt r WHERE r.partner_id IN (?) AND (r.deleted_at IS NULL)', array('text' => 1))

Примечание: пользователь квитанции, идентификатор_пользователя_символ_лист

* знак "≘" объяснен здесь http://en.wikipedia.org/wiki/Equals_sign (Пример "A ≘ B", в словах "A подобен / является синонимом для B")

...