对于Symfony专家来说,这可能是一个非常简单的问题,但对我来说,这项技术中的菜鸟很难。当涉及颜色时,我有一个任务是在文本框附近放置一个颜色选择器。我在Symfony文档中阅读了很多关于表单,表单项,扩展等的文章,并提出了通过向表单构建器添加颜色选择器子项来扩展TextType
的想法。颜色选择器的类已经存在。这是我的代码:
<?php
namespace Pph\App\SingBundle\Form\Extension;
use Symfony\Component\Form\AbstractTypeExtension;
use My\Name\Space\ColorPickerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
/**
* TextTypeColorPickerExtension.
*
* This is an extension to TextType form field, to allow color picker usage when colors are involved
*
* @author some dude
*/
class TextTypeColorPickerExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('text', ColorPickerType::class, array(
'required' => false,
'empty_data' => '',
));
}
/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return TextType::class;
}
}
而这一点,可以理解的最终是无限递归。这还不能处理带颜色的逻辑,这将是下一步,现在我正在尝试扩展TextType
。在添加颜色选择器之后,我可以以某种方式标记我的TextType
对象以停止以某种方式递归吗?
答案 0 :(得分:0)
事实证明ColorPickerType
添加了TextType
,因此我对class
TextTypeColorPickerExtension
的尝试不合理,因为它通过以下步骤创建了无限循环:
TextType
已添加ColorPickerType
已添加到TextType
由于TextType
ColorPickerType
已添加到ColorPickerType
等等等等......
我用逻辑解决了我的问题,该逻辑确定是否需要添加TextType或ColorPickerType。