【问题标题】:Custom form type symfony自定义表单类型 symfony
【发布时间】:2013-01-29 07:03:33
【问题描述】:

我需要在 Symfony 中设置一个自定义表单类型,它使用选择类型作为父项,但实际上并不需要预加载选择。正如我希望能够使用 ajax 调用填充选择,然后使用调用中的选项之一提交而不会收到 This value is not valid. 错误,大概是因为它不是预加载的选项之一。

我不需要自定义数据转换器,因为我正在通过捆绑控制器执行此操作,我只需要 Symfony 在我使用最初不在列表中的选项提交时不要抱怨。到目前为止,我的自定义表单类型如下所示:

<?php

namespace ISFP\Index\IndexBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class NullEntityType extends AbstractType
{
    public function getDefaultOptions(array $options)
    {
        $defaultOptions = array(
            'em'                => null,
            'class'             => null,
            'property'          => null,
        );

        $options = array_replace($defaultOptions, $options);

        return $options;
    }

    public function getParent()
    {
        return 'choice';
    }

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

【问题讨论】:

  • 没有人吗?对于知道自己在做什么的人来说,我会认为这是一个相当简单的问题..?
  • 1.在您认为没有人可以或不会提供帮助之前,等待 7 个小时并不是很长的时间。 2. 你实际上并没有问问题。
  • 哈哈 lighthart,没错,但是我有点赶时间,因为我打算今晚晚些时候将这个网站交付给客户..
  • 至于一个问题,我想我问你是否可以在-&gt;setAllowedValues() 参数中放置一个实体,但在生成表单时并没有让它实际加载实体。这有意义吗?
  • 我在stackoverflow.com/questions/11462839/… 处理了其中一些问题,但没有直接回答这个问题。在给出一个体面的答案之前,我需要再考虑一下。

标签: php ajax dynamic symfony symfony-2.1


【解决方案1】:

老兄看看EntityType,它的父级是choice。但整个显示由ChoiceType 处理。当我做类似的事情时,我已经从过载开始 ChoiceTypeEntityType。然后在重载实体中设置getParent()来挖掘重载选项。

最后,就我而言,我修改了新的choice 并将我的嵌入表单放在那里。做起来很棘手。而且会耗费大量时间。

但是通过这种方法,我对验证没有任何问题。

【讨论】:

  • 你能扩展这个答案吗?也许提供一些工作代码,以便我可以复制您的解决方案?感谢您的建议!
  • 您使用的是 symfony2.0 还是 symfony 2.1?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多