我正在尝试使用Entity Repository来编写我的自定义函数。
我有一个实体和他的存储库是从yaml文件生成的
Yaml文件
Bluesys\WeekupBundle\Entity\Event:
type: entity
repositoryClass: Bluesys\WeekupBundle\Repository\Event
fields:
id:
id: true
type: integer
generator:
strategy: AUTO
...
自动生成的实体代码
namespace Bluesys\WeekupBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Event
*/
class Event
{
/**
* @var integer
*/
private $id;
...
}
自动生成存储库代码 我juste写了函数isHidden
namespace Bluesys\WeekupBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* Event
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class Event extends EntityRepository
{
/**
* isHidden
*
* @return bool
*/
public function isHidden()
{
return true;
}
}
控制器代码
namespace Bluesys\WeekupBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Bluesys\WeekupBundle\Event\Event;
...
class TimelineController extends Controller
{
public function testAction(){
$repository = $this->getDoctrine()->getManager()->getRepository('BluesysWeekupBundle:Event');
$event = $repository->findOneById( 73 );
return $this->render('BluesysWeekupBundle::test.html.twig', array( 'event' => $event ));
}
...
和观看代码
{{ event.isHidden }}
我收到此错误: 对象“Bluesys \ WeekupBundle \ Entity \ Event”的方法“isHidden”在第1行的BluesysWeekupBundle :: test.html.twig中不存在
有人可以通过告诉我缺少什么来帮助我吗?
答案 0 :(得分:1)
存储库类仅用于选择/获取数据。它们不是实体/对象的一部分。
如果你真的想通过存储库调用isHidden
方法,你可以通过将整个存储库传递给模板(return $this->render('BluesysWeekupBundle::test.html.twig', array( 'event' => $repository ));
)来实现这一点,但这是非常糟糕的主意。
相反,您可以将isHidden()
方法放入您的实体类中,并将其称为event.isHidden
..