1

我正在研究 symfony2 和 twig。

这是我的问题:

我的员工可以拥有车辆。有些车辆可以有罚款。例如。

我想检查我员工的车辆中是否有一个 dateFine。如果一辆车有日期罚款,我想显示一个一般警报:“警告:你的一辆车有罚款。”

在我的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 个警报,我只想有一个。所以我只需要检查是否在我所有员工的车辆中定义了 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 回答