Sylius v1.0.0 简单表单扩展

Sylius v1.0.0 simple form extension

我在扩展表单时遇到问题。我只想更改欧盟风格的生日格式 (dd.MM.yyyy)。所以我创建了 src/AppBundle/Form/Extension/CustomerProfileTypeExtension.php

<?php

namespace AppBundle\Form\Extension;

use Sylius\Bundle\CustomerBundle\Form\Type\CustomerProfileType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

final class CustomerProfileTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{

// Change to EU Style dd.MM.yyyy
$builder->add('birthday', BirthdayType::class, [
'format' => 'dd.MM.yyyy',
]);
}

/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return CustomerProfileType::class;
}
}

我将 AppBundle/Resources/config/services.yml 更改为

services:
app.form.extension.type.customer_profile:
class: AppBundle\Form\Extension\CustomerProfileTypeExtension
tags:
- { name: form.type_extension, extended_type: Sylius\Bundle\CustomerBundle\Form\Type\CustomerProfileType } 

但没有变化。清除缓存对我没有帮助! 我也像 sylius 示例中那样进行了更改,以删除性别字段或将 required 更改为 true - 它不起作用。

有什么想法/帮助吗?

麦克

我刚刚测试了这个,它抛出了一个错误,因为你缺少以下行

use Symfony\Component\Form\Extension\Core\Type\BirthdayType;

事实上,删除

use Symfony\Component\Form\Extension\Core\Type\TextType;

因为它没有被使用,所以用 BirthdayType 行替换它

添加后,效果很好。

约翰

O.K。 - 使其正确:

acme/src/AppBundle/Form/Extension/CustomerProfileTypeExtension.php

<?php

namespace AppBundle\Form\Extension;

use Sylius\Bundle\CustomerBundle\Form\Type\CustomerProfileType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
use Symfony\Component\Form\FormBuilderInterface;

final class CustomerProfileTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{

// Change to EU Style dd.MM.yyyy
$builder->add('birthday', BirthdayType::class, [
'format' => 'dd.MM.yyyy',
'required' => true,
]);
}

/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return CustomerProfileType::class;
}
}

acme/src/AppBundle/Resources/config/services.yml

services:
app.form.extension.type.customer_profile:
class: AppBundle\Form\Extension\CustomerProfileTypeExtension
tags:
- { name: form.type_extension, extended_type: Sylius\Bundle\CustomerBundle\Form\Type\CustomerProfileType } 

相同 - 没有变化 - 如果我改到这里。 acme/app/config/services.yml

字段没有变化。没有错误 - 当我清除缓存时也没有。

解决方案:我忘记在 config.yml

中导入 services.yml ´- { 资源: "services.yml" }´