1

私はsymfony2と小枝に取り組んでいます。

ここに私の問題があります:

私の従業員は車両を持つことができます。一部の車両は罰金を科すことができます。

私の従業員の車の中にdateFineがあるかどうかを確認したいと思います。1 台の車両に罰金が科せられた場合、一般的な警告を表示したいと思います:「警告: あなたの車両の 1 台に罰金があります。」

私の employee.html.twig ビューでは、次のように記述します。

    {% for vehicle in employee.vehicles %}
        {% if vehicle.dateFine is defined %}
           <div> Warning : one of your vehicle has a fine. </div>
        {% endif %}
    {% endfor %}

問題:もちろん、そのコードでは、2 台の車両に dateFine がある場合、2 つのアラートが発生することになりますが、1 つだけにしたいのです。そのため、従業員のすべての車両で dateFine が定義されているかどうかを確認するだけで済みますが、その方法がわかりません。

どうもありがとう

4

2 に答える 2

3

これは、後で再利用するか、少なくともオブジェクトで制御したいある種のロジックであるため、ロジックをモデルに移動します。これを行う最善の方法は、従業員オブジェクトに hasFine を追加することです。

class Employee {
    public function hasFine() {
        foreach($this->vehicles AS $vehicle) {
            if($vehicle->getDateFine() != null) return true;
        }

        return false;
    }
}

テンプレートでは、次の関数を使用できます。

{% if employee.hasFine %}
    <div> Warning : one of your vehicle has a fine. </div>
{% endif %}
于 2012-07-03T20:07:38.840 に答える
2

最善の方法は、このロジックを従業員クラスに移動することです。Employee で呼び出されるメソッドを作成し、hasVehicleDateFine()そこでループとロジックを実行します。

于 2012-07-03T20:05:50.407 に答える