私はそれらにいくつかのカテゴリとアイテムを持っています。項目が設定されていないカテゴリだけを削除できるようにしたい。たとえば、書籍のカテゴリがありますが、具体的な書籍が追加されていないため、削除できます。そして、私は食品のカテゴリーを持っていて、それにはピザ、サンドイッチ、リンゴがあります - だから私はそれを削除することはできません. これをどうするのがベストなのかを考えています。
<table class="table table table-striped spacer">
{% for c in cat %}
<tr>
<td>
{# If in edit mode, display edit form #}
{% if id == c.id %}
<form class="form-inline" action="{{ path('edit_category', {'id': c.id}) }}" method="post" {{ form_enctype(form) }}>
{% form_theme form 'EMBudgetTrackerBundle:Forms:inputs.html.twig' %}
{% for field in form %}
{{ form_row(field) }}
{% endfor %}
<button type="submit" class="btn"><i class="icon-ok"></i></button>
</form>
{# Else display the name #}
{% else %}
{{ c.name }}
<a href="{{ path('edit_category', {'id': c.id}) }}"><i class="icon-pencil"> </i></a>
<a href="{{ path('delete_category', {'id': c.id}) }}"> <i class="icon-remove"></i></a>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
これは、私が各カテゴリに対して行っていることです。私が欲しいのは、追加されたアイテムがある場合、削除リンクが提供されないことです。私が考えることができた唯一のことは、2 つの配列を持つことでした。1 つは項目を含むカテゴリを持ち、もう 1 つは項目を含まないカテゴリを持ち、これを両方の for ループにします。しかし、これはコードの重複につながります - すべてが同じになり、1 つのループだけが<a href="{{ path('delete_category', {'id': c.id}) }}"> <i class="icon-remove"></i></a>
この行を持たず、あまりエレガントに見えません。私は何かのようなことを考えていた
if(c.name not member of array_with_categories_without_items)
then display the delete link
しかし、これを行う方法があるかどうかはわかりません。誰かが私にいくつかのアイデアを教えてもらえますか? 事前にどうもありがとうございました!:)