Прошу прощения за заголовок, но я не знаю, как его правильно определить. Я хочу, чтобы мое приложение сортировало данные (в Doctrine) в зависимости от параметра сортировки, который пользователь выбирает в раскрывающемся списке форм.
Данные, которые я упомянул выше, хранятся в моем Doctrine объекте, который я назвал им Flashcards
, а объект Flashcards
содержит свойства, которые должны быть отсортированы по выбору пользователя в раскрывающемся списке. Flashcards
Сущность выглядит следующим образом (для простоты я дал только несколько свойств):
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Words", inversedBy="flashcards")
* @ORM\JoinColumn(nullable=false)
*/
private $words;
/**
* @ORM\Column(type="datetimetz")
*/
private $creation_date;
Теперь код контроллера для формы обычный, как у Symfony Do c скажем:
// code for form inside FlashcardController
$flashcard = new Flashcards();
$form = $this->createForm(FlashcardType::class, $flashcard);
А внутри FlashcardController
render () метод, который я вызываю createView () метод для $form
объекта.
Код формы находится внутри класса FlashcardType
и содержит код для упомянутого выше выпадающего списка и его параметры. Выглядит это так (для простоты я привел только методы):
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('sortBy', ChoiceType::class, [
'label' => 'Sort by',
'choices' => [
'Date increase' => 1,
'Date decrease' => 2,
'Word alphabetically' => 3,
'Word not alphabetically' => 4
]
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Flashcards::class
]);
}
Итак, как вы видите, в выпадающих опциях есть сортировка по: дате увеличения, дате уменьшения, слову по алфавиту, слову не по алфавиту. Пользователь выбирает один из них в поле зрения. Таким образом, манипулирование данными пользователем НЕ меняет значения этих данных , представленных свойствами. Изменение параметра сортировки в раскрывающемся списке должно изменить запрос Doctrine для сортировки по измененному пользователем значению. Я не знаю, как этого добиться в Symfony. Не могли бы вы дать мне несколько советов, как это сделать?
Заранее спасибо за ответы!