MYSTERRIA3.0

Symfony: Создание формы с заданным подмножеством полей

Время от времени большой объект приходится редактировать с помощью нескольких небольших форм. Стандартными средствами форм Symfony приходится вместо указания нужных полей исключать в настройках формы ненужные методом unset['fieldname]. При добавлении новых полей в базу такой подход заставит нас править все относящиеся к измененным таблицам формы, что, при большом количестве форм, весьма неудобно и потенциально грозит сломанными формами на сайте.

Решение этой проблемы достаточно простое - добавить функциональность для указания в методе конфигурации формы именно тех полей, которые должны быть в нашей форме. Я приведу пример для Propel.

Добавляем в lib/form/BaseFormPropel.class.php новый метод:

public function unsetAllExcept($fields = array()) {
		$tmp = array();	
	        foreach ($this->getObject()->toArray( BasePeer::TYPE_FIELDNAME ) as $key => $val) {
			$tmp[] = strtolower($key);
		}
		$tmp = array_diff($tmp, $fields);
		foreach ($tmp as $value) {
			unset($this[$value]);
		}
}

Далее в классе нашей формы в методе configure пишем:

$this->unsetAllExcept(array('field1', 'field2', 'fieldN'));

Рубрики: Symfony

↑ Наверх


blog comments powered by Disqus

Контакты

Igor Zinkovsky aka TLoD,Snake. Писать на электропочту, стучаться в аську 302380533, искать в Санкт-Петербурге.

© 2002-2019