в моих формах фильтра я хочу изменить значение по умолчанию 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")