与TWIG的关系

时间:2012-04-12 08:19:11

标签: php symfony twig

之前我使用过Symfony 1.4。现在我学习Symfony 2.我这样做:http://symfony.com/doc/current/book/doctrine.html     我有:

    class Product
{

    /**
     * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     */
    protected $category;

    //...
}

class Category
{

    /**
     * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
     */
    protected $products;

    public function __construct()
    {
        $this->products = new ArrayCollection();
    }
    //...
}

在forem中的Symfony 1.4中我可以使用:

    $result = findAll from Products.
foreach ($results as $result){
    echo $result->getCategory()->getName();
}

如何在TWIG系统中获得关系(在此示例中为Category)?

{% for item in results %}
                <li><a href="{{ item.id }}">{{ item.name }} --- {{ item.category }} {{item.category.name}}</a></li>
            {% endfor %}

item.category和item.category.name无效。我在文档中找不到这个。

修改

好的,我现在知道了。我在一个产品中没有关系。在此之前我该如何保护?

我有:

id | name    | category
1  | first   | 1
2  | second  | NULL
3  | third   | 2

如果在每个行类别中不为null然后这工作正常,但如果我在关系中有NULL,那么我有错误:

Item "name" for "" does not exist in AcmeStoreBundle:Default:index.html.twig at line 3 

我能用这个做什么?

1 个答案:

答案 0 :(得分:3)

将此添加到要输出名称的位置。这样可以防止twig抛出该错误。

{% if item.category.name is defined %}
    {# print the name here #}
{% endif %}