我正在研究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,但我不知道该怎么做。
非常感谢
答案 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()
的方法,然后在那里进行循环和逻辑。