/ * controller_问题是总是为不同的语言添加一些属性* /
`
if ($request->isMethod('POST') && null !== ($request->request->get('ajouter')))` {
$pack = new Packs();
$pack->setPackPrice($request->request->get('pack_price'));
$pack->setDataCreated(new \DateTime('now'));
$pack->setDataStatus($request->request->get('data_status'));
foreach ($listLanguages as $language) {
$packLanguage = new Packs2lng();
$packLanguage->setLanguage($language);
$packLanguage->setPack($pack);
$packLanguage->setPack2lngWording($request->request->get('pack_2lng_wording'));
$packLanguage->setPack2lngDescription($request->request->get('pack_2lng_description'));
$em->persist($packLanguage);
}
// view_我认为我的输入请求必须是可变的
{% for i in listLanguages %}
<div class="form-group">
<label class="control-label col-md-3">Titre </label>
<div class="col-md-4">
<input type="text" name="pack_2lng_wording" data-required="1" class="form-control" value="{% if packLanguage.pack2lngWording is defined%}{{packLanguage.pack2lngWording}} {%endif%}"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">Description </label>
<textarea cols="60" rows="5" class="span4" name="pack_2lng_description">
{% if packLanguage.pack2lngDescription is defined%}{{packLanguage.pack2lngDescription}} {%endif%}</textarea>
</div>
{%endfor%}
答案 0 :(得分:0)
假设用户输入法语和英语翻译。使用您当前的视图,帖子请求将是:
这不起作用,因为第一个pack_2lng_wording
会被第二个覆盖。
要阻止它,您必须将[]
添加到name
的{{1}}属性中:
input
或添加<input type="text" name="pack_2lng_wording[]" />
以获取关联数组(假设每种语言都有语言代码,即ISO 639-1代码):
{{ i.code }}
这会导致这个帖子请求:
在您的控制器中,您必须添加<input type="text" name="pack_2lng_wording['{{ i.code }}']" />
:
[$language]
BTW:我强烈建议使用Symfony Forms。你现在正在重新发明轮子。如果你想学习,那就没关系,但是如果你使用的文档很好,维护得很好等,它会让你的生活变得更轻松(和你的应用程序)。