symfony2集合设置默认值

时间:2014-07-03 12:44:43

标签: php forms symfony

使用Symfony2,我们有一个Product表单,其中包含productOption表单的集合。这样可以正常工作,但我们希望在productOption表单中将某些值默认设置为0。

我已尝试过其他StackOverflow问题中提供的解决方案,但我仍然只是得到空白字段。目前,所需的默认值是通过Entity的构造函数设置的:

// ProductOptionValue Entity
public function __construct()
{
    $this->option_values = new \Doctrine\Common\Collections\ArrayCollection();

    $this->subtract = true;
    $this->price = 0.00;
}

表单集的原型不是标准的 - 它通过模板中的宏进行修改,输出表单:

{% macro product_option_value_prototype(product_option_value) %}
<td>
    <div class="product_option_value_widget">{{ form_widget(product_option_value.option_value) }}</div>
    <div class="product_option_value_error">{{ form_errors(product_option_value.option_value) }}</div>
</td>

<td>
    <div class="product_option_value_widget">{{ form_widget(product_option_value.quantity) }}</div>
    <div class="product_option_value_error">{{ form_errors(product_option_value.quantity) }}</div>
</td>

<td>
    <div class="product_option_value_widget">{{ form_widget(product_option_value.subtract) }}</div>
    <div class="product_option_value_error">{{ form_errors(product_option_value.subtract) }}</div>
</td>

<td>
    <div class="product_option_value_widget">{{ form_widget(product_option_value.price_multiplier) }}</div>
    <div class="product_option_value_error">{{ form_errors(product_option_value.price_multiplier) }}</div>
</td>

<td>
    <div class="product_option_value_widget">{{ form_widget(product_option_value.taxed_price) }}</div>
    <div class="product_option_value_error">{{ form_errors(product_option_value.taxed_price) }}</div>
</td>
{% endmacro %}

...其中,在同一模板中使用:

<table class="product_option_values" data-prototype="{{ _self.product_option_value_prototype(form.product_option_values.vars.prototype)|e }}">

我已经尝试将其他值设置为默认值(10而不是0),以防Symfony在0时忽略它们。

我也试过实现这个CollectionTypeExtension Gist。无论我尝试什么,默认情况下我们仍然会得到空白字段。因为StackOverflow上的其他解决方案似乎给人们带来了成功,我觉得实体或FormType在其他地方肯定存在问题,但我们找不到它。有什么想法吗?

0 个答案:

没有答案