symfony - Symfony Form - 通过更改下拉列表中的排序选项对数据进行排序
问题描述
我很抱歉标题,但我不知道如何定义它好。我希望我的应用程序根据用户在表单下拉列表中选择的排序选项对数据(在 Doctrine 中)进行排序。
我上面提到的数据存储在我称之为它的 Doctrine Entity 中,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 Doc 说的:
// 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 中实现这一点。你能给我一些制作方法吗?
预先感谢您的回答!
解决方案
如果我理解正确,您有几个选择:
首先:连接 javascript / jquery 以选择输入并在用户更改订单时提交表单(它应该重新加载应用过滤器的表单,您可以设置“上一个”页面中使用的任何数据用户使用 RequestStack 根据方法从请求/查询中获取表单字段)
第二:获取您显示的所有节点记录并尝试在每次用户更改值时根据选择值操纵订单
告诉我这是否是您的意思否则纠正我,我会尽力提供答案
推荐阅读
- python - 在 pandas 中读取 csv 文件时出现问题,数据显示不正确
- python - 我想通过使用 python 2 集群访问 spark 中的 csv 文件来创建 rdd
- python - 我正在尝试网络抓取,但得到一个函数而不是实际数据
- mysql - 如何获取过去 5 年中开设帐户的用户总数,并按信用评分对他们进行分组
- image - Firebase 存储映像的静态或固定 URL
- xcode11 - Xcode 11 使用管理器上传 IPA 失败
- vba - Word VBA 在每一页上创建图表
- visual-studio-code - VS Code - 你如何实际使用扩展
- docker - 创建hadoop容器(Docker)时来自守护进程的错误响应
- python - 如何在 python (bet365) 中通过 selenium 访问“无法访问”的输入字段