使用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在其他地方肯定存在问题,但我们找不到它。有什么想法吗?