gpt4 book ai didi

php - Symfony2 - 使用表单类时如何设置和获取选项?

转载 作者:可可西里 更新时间:2023-11-01 13:02:17 25 4
gpt4 key购买 nike

我正在使用表单类在我的项目中构建各种表单。

在实体类型文件中,对于 buildForm 函数,有一个辅助参数“array $options”(这在 Symfony 2 官方文档中有显示,但从来没有提到过!)

我已经将一个数组输入到我的 Controller 中的 createForm 函数中,但现在我完全不知道如何检索存储的值?

$form = $this->createForm(new ProductType(array(), array('id' => '2')), $product);

我发现的关于获取选项的唯一方法是使用 getOption() 函数,但这在 Symfony 2 中不存在(我发现的帖子来自 2010 年)。

我尝试使用:

$id = $options['id'];

但是当我尝试在任何地方使用 $id 时,出现错误:

Notice: Undefined index: id

什么给了?

如何从 $options 数组中检索我的值?我是否一开始就正确设置了它们?

编辑 - 更多代码:

表单类

<?php

namespace DEMO\DemoBundle\Form\Product;

use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class ProductType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('slug')
->add('reference')
->add('description')
->add('active_from')
->add('active_till')
->add('is_active')
->add('category', 'entity', array(
'class' => 'DEMO\DemoBundle\Entity\Product\ProductCategory',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.section = :id')
->setParameter('id', ***ID VARIABLE NEEDS TO GO HERE***)
->orderBy('u.root', 'ASC')
->addOrderBy('u.lft', 'ASC');
},
'empty_value' => 'Choose an option',
'property' => 'indentedName',
));
}

public function getDefaultOptions()
{
return array(
'data_class' => 'DEMO\DemoBundle\Entity\Product\Product'
);
}

public function getName()
{
return 'demo_demobundle_product_type';
}
}

最佳答案

我认为您一开始就没有正确设置它们。您应该将它们作为 createForm()

的第三个参数

编辑:这是您的表单类的外观:

<?php
namespace DEMO\DemoBundle\Form\Product;

use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class ProductType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('slug')
->add('reference')
->add('description')
->add('active_from')
->add('active_till')
->add('is_active')
->add('category', 'entity', array(
'class' => 'DEMO\DemoBundle\Entity\Product\ProductCategory',
'query_builder' => function(EntityRepository $er) use($options) {
return $er->createQueryBuilder('u')
->where('u.section = :id')
->setParameter('id', $options['id'])
->orderBy('u.root', 'ASC')
->addOrderBy('u.lft', 'ASC');
},
'empty_value' => 'Choose an option',
'property' => 'indentedName',
));
}

public function getDefaultOptions()
{
return array(
'data_class' => 'DEMO\DemoBundle\Entity\Product\Product',
'id' => null
);
}

public function getName()
{
return 'demo_demobundle_product_type';
}
}

关于php - Symfony2 - 使用表单类时如何设置和获取选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10382075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com