gpt4 book ai didi

symfony - 如何从 Twig 模板中的相关对象输出数据?

转载 作者:行者123 更新时间:2023-12-01 18:44:36 24 4
gpt4 key购买 nike

我对 Symfony2 还很陌生,所以请放轻松。我正在尝试遍历一张航类表(用于机票预订系统),其中有几个相关字段,例如航空公司和机场。我在自定义存储库中使用以下方法:

public function getAllFlights($limit = 100)
{
$dql = 'SELECT f FROM Flightcase\BookingBundle\Entity\Flight f';

$query = $this->getEntityManager()->createQuery($dql);
$query->setMaxResults($limit);

return $query->getResult();
}

并且 getAllFlights() 被传递到我的 Twig 模板,如下所示:

$flights = $em->getRepository('FlightcaseBookingBundle:Flight')->getAllFlights();   

return $this->render('FlightcaseBookingBundle:Flight:list.html.twig', array('flights' => $flights));

Twig 模板只是循环遍历 $flights 集合中的项目,如下所示:

{% for flight in flights %}
<tr>
<td>{{ flight.airline }}</td>
<td>{{ flight.origin }}</td>
<td>{{ flight.destination }}</td>
<td>{{ flight.dateFrom }}</td>
<td>{{ flight.timeFrom }}</td>
<td>{{ flight.dateTo }}</td>
<td>{{ flight.timeTo }}</td>
</tr>
{% endfor %}

但是我收到一个丑陋、神秘的异常,告诉我“Proxies\FlightcaseBookingBundleEntityAirlineProxy 类的对象无法转换为字符串”,这让我相信我需要获取 Airline 对象内的特定属性例如以字符串形式输出的 IATA 代码。但是如何访问 Twig 模板中的 $airline->getIataCode() 呢?或者我的存储库中有没有办法将相关对象转换为字符串?

最佳答案

我假设航空公司是一个单独的实体,它与 Doctrine 中的航类实体有关联。像这样的东西:

class Airline
{
private $id;
private $name;
private $flights;
...
}

这是正确的吗?如果是这样,那就是您看到该特定错误的原因。您给 Twig 一个对象,并告诉它打印出来......但这到底意味着什么?

假设您的类如上所示,并且您只是想打印出航空公司的名称。

您可以执行以下两种操作之一:

首先,您可以为您的对象提供一个 toString() 方法:

class Airline
{
public function toString()
{
return $this->getName();
}
}

或者,您可以为 Twig 提供一些标量来使用:将 {{ Flight.airline }} 替换为 {{ Flight.airline.name }}

编辑:

刚刚看到您的 Airline 对象有一个名为 $IataCode 的属性。在这种情况下,您可以使用 {{ Flight.airline.IataCode }} 在 Twig 中渲染它。

关于symfony - 如何从 Twig 模板中的相关对象输出数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12522028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com