Forms 使用会话值设置表单数据,而不提交此symfony表单
大家好,symfonistes 我想在网页中使用symfony的表单来获取搜索数据,当这些数据得到验证时,我会使用一个带有分页系统的表格来查看表单所在网页中的数据 我的网页运行正常,搜索引擎和分页系统表,但只有一件事没有运行。当我单击系统分页按钮(排序、页码或每页的浏览次数)时,会向控制器发送一个请求,此时我丢失了数据选择表 系统分页的结果良好,与以前的搜索相对,但数据形式消失。这样,用户可以使用我的网页,但他不会查看结果的参数 我想使用会话使用前面定义的数据重新生成表单。目前,我在表单类中使用首选_选项(不运行),但如果您有其他解决方案,欢迎使用 或者你能告诉我为什么我的表格没有运行吗 非常感谢你的支持 我的班级:Forms 使用会话值设置表单数据,而不提交此symfony表单,forms,symfony,session,Forms,Symfony,Session,大家好,symfonistes 我想在网页中使用symfony的表单来获取搜索数据,当这些数据得到验证时,我会使用一个带有分页系统的表格来查看表单所在网页中的数据 我的网页运行正常,搜索引擎和分页系统表,但只有一件事没有运行。当我单击系统分页按钮(排序、页码或每页的浏览次数)时,会向控制器发送一个请求,此时我丢失了数据选择表 系统分页的结果良好,与以前的搜索相对,但数据形式消失。这样,用户可以使用我的网页,但他不会查看结果的参数 我想使用会话使用前面定义的数据重新生成表单。目前,我在表单类中使用
class CqsProSansMarqueType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$defaultCQSsearch = new CqsProSansMarque();
ladybug_dump($options['attr']);
$defaultCQSsearch->setRayLibelle((!array_key_exists('ray_libelle', $options['attr'])) ? null : $options['attr']['ray_libelle']);
$defaultCQSsearch->setFamLibelle((!array_key_exists('fam_libelle', $options['attr'])) ? null : $options['attr']['fam_libelle']);
$defaultCQSsearch->setCaeLibelle((!array_key_exists('cae_libelle', $options['attr'])) ? null : $options['attr']['cae_libelle']);
ladybug_dump($defaultCQSsearch);
$builder
->add('ray_libelle', 'entity', array(
'class' => 'ApplicationDriveBundle:CqsProSansMarque',
'property' => 'ray_libelle',
'query_builder' => function(CqsProSansMarqueRepository $er){
return $er->createQueryBuilder('a')
->select('a')
->groupBy('a.ray_libelle');
},
'preferred_choices' => array($defaultCQSsearch),
'label' => 'rayon',
'required' => false,
))
->add('fam_libelle', 'entity', array(
'class' => 'ApplicationDriveBundle:CqsProSansMarque',
'property' => 'fam_libelle',
'query_builder' => function(CqsProSansMarqueRepository $er){
return $er->createQueryBuilder('a')
->select('a')
->groupBy('a.fam_libelle');
},
'label' => 'famille',
'required' => false,
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Application\DriveBundle\Entity\CqsProSansMarque',
));
}
public function getName()
{
return 'CqsProSansMarque';
}
}
我的控制器构造的窗体:
$searchForm2 = $this->createForm(new CqsProSansMarqueType(), $CqsProSansMarque, array(
'action' => $this->generateUrl('QualityPage_proSansMarque_search', array('maxItemsPerPage' => $maxItemsPerPage)),
'method' => 'POST',
'attr' => array('ray_libelle' => $CqsProSansMarque->getRayLibelle()),
));
我测试了$defaultCQSearch变量。这似乎是一个很好的安排。做你想做的事情有多种选择: 1)提交会话中存储的数据 您可以通过两种方式向表单提交数据:
- 在本例中,使用handleRequest传递整个请求
- 在这种情况下,使用submit直接将字段传递给表单
最广泛使用的方法是第三种方法,但在会话中存在与对象反序列化相关的问题(在您的案例中,相关实体将与原则分离),因此,我建议您尝试仍然有效的第一种或第二种选择。问题与以前相同。首选_选项不会在会话中存储提交的表单数据类或使用事件表单::PRE_SET_数据时运行。我已将对象设置为正确的值,但首选选项不会在字段中选择我的值。您需要编辑表单的数据,而不是首选选项,但我希望在第一次使用表单时,在我的实体字段顶部选择以前选择的数据和(重要的)其他数据。同一选择HTML或实体字段表单中的首选选项和其他选项。