Надо сделать более-менее примитивный фильтр. Имеется таблица с даннми, которую не мешало бы чуток фильтровать по выбранному ( по умолчанию - текущий год ) году в простом дроп-дауне.
Единственные условия:
- текущий год всегда в списке
- остальные года (например 2013, 2014) читаются ( группируются и аггренируются ) из базы
- обычный POST/GET пока никакого AJAX´а
- использование symfony2-forms предпочтительно.
UPDATE:
пока только остановился на вот этом:
namespace MyBundle\Model\Filter;
class YearModel
{
/**
* @var array
*/
private $years = array();
/**
* @return array
*/
public function getYears()
{
return $this->years;
}
/**
* @param $year
* @return YearModel
*/
public function addYear( $year )
{
/** .... добавить год в список, если еще нет ... */
}
/**
* @param $year
* @return YearModel
*/
public function removeYear( $year )
{
/** .... удалить, если есть ... */
}
}
и класс формы:
namespace MyBundle\Form\Filter;
use /** use statements */
class YearFilterType extends AbstractType
{
const FILTER_TYPE_NAME = 'years_formfilter';
public function buildForm( FormBuilderInterface $builder, array $options )
{
cb_pre_set_data = function( FormEvent $o_event ) use ($em) {
// достучаться до модели
// прочитать данные из базы
// обновить модель
};
$builder->add('years', 'choice', array(
'required' => true,
'placeholder' => false,
));
$builder->addEventListener(FormEvents::PRE_SET_DATA, $cb_pre_set_data);
}
public function setDefaultOptions( OptionsResolverInterface $resolver )
{
$resolver->setDefaults(array(
'csrf_protection' => false,
'data_class' => "MyBundle\\Model\\Filter\\YearModel"
));
}
public function getName()
{
return self::FILTER_TYPE_NAME;
}
}
но не работает. точнее список
ВСЕГДА пуст... не могу понять на чем спотыкаюсь