2013-12-04 2 views
0

Я использую Twig для моего проекта, и я хочу расширить глобальный объект app.user без добавления свойства в свой UserClass. Я имею в виду это:expand app.user в Symfony 2

У меня есть UserClass:

<?php 
namespace Test\CoreBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
* @ORM\Entity(repositoryClass="Test\CoreBundle\Repositories\UserRepository") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

} 

И я Repository:

<?php 
namespace Test\CoreBundle\Repositories; 

use Doctrine\ORM\EntityRepository; 


class UserRepository extends EntityRepository 
{ 

    public function getCountPosts() { 
     //some code 

     return 10; 
    } 
} 

Как я могу получить доступ к методу getCountPosts UserRepository внутри шаблонов Twig?

+0

Я предполагаю, что у вас есть 'OneToMany' отношения с' Post' лица. Как насчет '{{app.user.posts | length}}'? – Touki

+0

Считаете ли вы, что нужно создать расширение твига и разоблачить функцию репозитория? – Maerlyn

ответ

0

Вы не можете, потому что бизнес-логика должна быть в контроллерах. Вы можете создавать дополнительные методы в сущности и вызывать их в шаблоне Twig.

<?php 
namespace Test\CoreBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
* @ORM\Entity(repositoryClass="Test\CoreBundle\Repositories\UserRepository") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    public function getCountPosts() { 
     //some code 
     return 10; 
    } 

} 

И в файле Twig

{{ app.user.getCountPosts() }} 
+0

'app.user.countPosts' будет делать – Touki

Смежные вопросы