我收到此错误
键中包含“0”的数组的“getPageTitle”不存在 DprocMainBundle:第2行的Dproc:single.html.twig
第2行:{{ page.getPageTitle }}
我的实体档案
<?php
namespace Dproc\MainBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @IgnoreAnnotation("fn")
*
*/
/**
* @ORM\Entity
* @ORM\Table(name="pages")
*/
class Pages
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $Id;
/**
* @ORM\Column(name="page_title", type="text")
*/
protected $pageTitle;
/**
* @ORM\Column(name="page_content", type="text")
*/
protected $pageContent;
/**
* @ORM\Column(name="page_category", type="text")
*/
protected $pageCategory;
/**
* Get Id
*
* @return integer
*/
public function getId()
{
return $this->Id;
}
/**
* Set page_title
*
* @param string $pageTitle
* @return Pages
*/
public function setPageTitle($pageTitle)
{
$this->pageTitle = $pageTitle;
return $this;
}
/**
* Get page_title
*
* @return string
*/
public function getPageTitle()
{
return $this->pageTitle;
}
/**
* Set page_content
*
* @param string $pageContent
* @return Pages
*/
public function setPageContent($pageContent)
{
$this->pageContent = $pageContent;
return $this;
}
/**
* Get page_content
*
* @return string
*/
public function getPageContent()
{
return $this->pageContent;
}
/**
* Set page_category
*
* @param string $pageCategory
* @return Pages
*/
public function setPageCategory($pageCategory)
{
$this->pageCategory = $pageCategory;
return $this;
}
/**
* Get page_category
*
* @return string
*/
public function getPageCategory()
{
return $this->pageCategory;
}
}
控制器
public function IndexAction($slug)
{
$page = $this->getDoctrine()
->getRepository('DprocMainBundle:Pages')
->findByPageTitle($slug);
if (!$page) {
throw $this->createNotFoundException('No product found for slug '.$slug);
}
//print_r($page);
return $this->render('DprocMainBundle:Dproc:single.html.twig',array('page' => $page));
}
我做错了什么,我怎么称呼我的getter方法getPageTitle?
由于
答案 0 :(得分:14)
错误源于你的学说。如果你改变了
$page = $this->getDoctrine()
->getRepository('DprocMainBundle:Pages')
->findByPageTitle($slug);
为:
$page = $this->getDoctrine()
->getRepository('DprocMainBundle:Pages')
->findOneByPageTitle($slug);
你应该全力以赴。问题是'page'是一个页面数组(可能是一个只有一个页面的数组,但仍然是一个数组)。通过将方法更改为findOneByX,您可以确保Doctrine将返回单个对象,而不是对象数组。希望有所帮助。
答案 1 :(得分:1)
您的结果是一个数组,因为findByPageTitle($slug)
将返回所有匹配的数组,即使只有一个匹配。取而代之的是findOneBy(array('pageTitle'=>$slug))
,您将得到一个结果。您当前的设置可能会{{ page.0.getPageTitle }}
起作用。
答案 2 :(得分:0)
如果您打算使用getter函数,则需要执行以下操作:
{{page.getPageTitle()}}
注意括号。如果你想要twig自动使用getter函数你可以做
{{page.pageTitle}}
答案 3 :(得分:0)
你试过{{page.pageTitle|default('')}}
吗?它对我有用!
答案 4 :(得分:0)
很简单:getResult()
返回一个对象数组,即使只有一个。如果您希望此查询只返回一个对象,请使用getOneOrNullResult()
。