gpt4 book ai didi

forms - Symfony 表格 : "Array to string conversion" exception in modified DateType class

转载 作者:行者123 更新时间:2023-12-02 03:48:49 24 4
gpt4 key购买 nike

我想构建一个自定义 DateType 类。为此,我将 Symfony\Component\Form\Extension\Core\Type\DateType 类复制到我的 src/目录并更改了类名和 getName().

<?php

namespace FooBar\CoreBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
// ...

class MonthType extends AbstractType
{
// ...

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

// ...
}

我还注册了新类型:

foobar.form.type.month:
class: FooBar\CoreBundle\Form\Type\MonthType
tags:
- { name: form.type, alias: month }

但是,如果我尝试使用我的新类型,则会出现异常(/var/www/foobar/app/cache/dev/twig/4d/99/945***.php 中的数组到字符串的转换) 被抛出:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$default = new \DateTime('now');
$builder
->add('season', 'month', array('data' => $default))
;
}

注意:如果我将 'month' 更改为 'date' 一切正常。

有谁知道为什么会抛出异常以及我该如何摆脱它?

最佳答案

如何修复

您必须定义 block month_widget并用作表单字段模板以使 sf2 正确呈现该字段。

例如,在您的 .twig 中写下。

{% form_theme form _self %}

{% block month_widget %}
<input type="text" value="{{ value.year }}">
<input type="text" value="{{ value.month }}">
{% endblock %}

并根据您的喜好自定义演示文稿。

默认主题文件Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig可能有帮助。

有关详细信息,请参见下文。 http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-a-template-for-the-field

错误原因

Symfony2 没有名为 month_widget 的渲染 block .

MonthType您创建的是 FormType 的子项(因为继承的 getParent() 返回 'form')

month_widget找不到(因为你还没有定义它),所以它接下来会尝试呈现 form_widget .

form_widget ,只有简单的文本字段,如 <input type="text" value="{{ value }}" ... , 并且在这里失败,因为值不是标量。

value实际上不是 DateTime 而是数组,因为 DateTimeToArrayTransformer在类里面使用。(如类名所说,DateTime被转换成数组)

所以,错误是Array to string conversion .

关于forms - Symfony 表格 : "Array to string conversion" exception in modified DateType class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15219330/

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