gpt4 book ai didi

php - 在同一页面上多次生成相同的表单类型 Symfony2

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

我正在尝试生成一个表单类型,特别是“ProductLanguageType”。

我想生成与语言表中现有语言的当前数量一样多的 ProductLanguageType。

例如,如果我在语言表中有(英语、法语、俄语、中文),它会在同一页面上生成 4 个 ProductLanguageType 表单。

我想知道如何查询语言表并在同一页面上生成多个相同类型的表单,表单生成器是否能够做到这一点,或者是否有其他解决方法?一段时间以来一直遇到一些麻烦,很乐意为此找到一个好的解决方案。

产品语言类型:

class ProductLanguageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options){

$builder->add('id_language', 'entity', array(
'class' => 'AdminBundle:Language',
'data_class' => 'Main\AdminBundle\Entity\Language',
'property' => 'language'
)
)
->add('name', 'text')
->add('description', 'ckeditor', array(
'config_name' => 'admin',
'config' => array(
'filebrowser_image_browse_url' => array(
'route' => 'elfinder',
'route_parameters' => array('instance' => 'default'),
),
)
))
->add('short_description', 'text');

}

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

ProductType(ProductLanguageType 嵌入在这里):

class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options){

$builder->addEventListener(FormEvents::PRE_SET_DATA, array($this, 'onPreSetData'));
$builder->add('productLanguage', new ProductLanguageType())
->add('id_seller','text')
->add('price','text')
->add('cost_price','text')
->add('retail_price','text')
->add('hot', 'checkbox')
->add('featured', 'checkbox')
->add('new', 'checkbox')
->add('free_shipping', 'checkbox')
->add('status','text') //active or inactive, to be decided if hidden or visible
->add('Add', 'submit');

}
}

最佳答案

现在在 Symfony 3.0 中,他们更改了 createNamedBuilder,因此可以仅通过调用来解决此问题:

use AppBundle\Form\ShippingTrackCodeReturnType;

$uniqueForm = $this->get('form.factory')->createNamedBuilder('ship_form_'.$orderRecord->getId(), ShippingTrackCodeReturnType::class, $orderRecord)->getForm();

所以,你只需要循环显示和保存它们:

foreach ($invoice->getOrderRecords() as $key => $orderRecord) 
{
// creates the forms with different names
$returnShipTrackCodeForm = $this->get('form.factory')->createNamedBuilder('ship_form_'.$orderRecord->getId(), ShippingTrackCodeReturnType::class, $orderRecord)->getForm();

$returnShipTrackCodeForm->handleRequest($request);
if ($returnShipTrackCodeForm->isSubmitted() && $returnShipTrackCodeForm->isValid())
{
// flush object
}

$returnForms[$orderRecord->getId()] = $returnShipTrackCodeForm;
}

关于php - 在同一页面上多次生成相同的表单类型 Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690680/

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