如何检查实体集合中是否定义了一个字段?

时间:2012-07-03 17:58:47

标签: php symfony twig

我正在研究symfony2和twig。

这是我的问题:

我的员工可以拥有车辆。有些车辆可以很好。例如。

我想检查一下我的员工的车辆中是否有一个dateFine。 如果一辆车有一个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 %}

{% 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,但我不知道该怎么做。

非常感谢

2 个答案:

答案 0 :(得分: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 %}

答案 1 :(得分:2)

您最好的方法可能是将此逻辑移至员工类。在Employee中创建一个名为hasVehicleDateFine()的方法,然后在那里进行循环和逻辑。