0
所以我有嵌套File
的CollectionType
實體:Symfony的嫩枝 - 刪除嵌套收集而不顯示形式
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('file', FileType::class, array('label' => 'File', 'required' => false));
}
現在如果我顯示嵌套的實體,像這樣:
<h3>Files</h3>
<ul style="list-style-type:none;padding-left:0;" class="col-files">
{% for file in form.files %}
{{ form_row(file) }}
{% endfor %}
</ul>
與原型:
{% block _omics_experiment_files_entry_row %}
<li class="panel panel-body panel-default">
{{ form_row(form.file) }}
</li>
{% endblock %}
它像這樣生成HTML(在JS注入之後):
<li class="panel panel-body panel-default">
<div class="form-group">
<label class="control-label" for="omics_experiment_files_0_file">File</label>
<input type="file" id="omics_experiment_files_0_file" name="omics_experiment[files][0][file]">
</div>
<br>
<button type="button" class="btn btn-danger btn-sm"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Remove
</button>
<br>
</li>
當刪除按鈕被按下<li>
消失,在保存文件時正確地從父實體刪除。
不過,我不希望顯示的形式排,我寧願只顯示文件名:生成HTML像
<h3>Files</h3>
<ul style="list-style-type:none;padding-left:0;" class="col-files">
{% for file in form.files %}
<li class="panel panel-body panel-default">
<p><a href="{{ asset('uploads/omics_experiments/' ~ file.vars.value.path) }}">{{ file.vars.value.name }}</a></p>
</li>
{% endfor %}
</ul>
:
<li class="panel panel-body panel-default">
<p><a href="/uploads/omics_experiments/f504b28f1818493d0cbb712e9b3993b009bef857-001 ÔùÅÔùÅ.lrtemplate">001ÔùÅÔùÅ.lrtemplate</a></p>
<br><br>
<button type="button" class="btn btn-danger btn-sm"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span> Remove </button>
<br>
</li>
從而消除本身從DOM好,但實際上並沒有刪除實體。
這兩種情況下的button
元素只是刪除父代<li>
。
有誰知道我需要做什麼,我可以有第一個例子的行爲,第二個的用戶界面?
我已經嘗試過包括{{form_row(file)}}
內hidden
/visibility:none
div
,這引起,所以我不認爲作品DOM行爲異常。
編輯:
我也嘗試添加一個input:hidden
場具有相同id
和name
作爲表單輸入,這沒有奏效。