这似乎是一个有趣的问题,我不确定我是否遗漏了一些东西,因为它应该很简单,但不是。
AcmePageBundle
AcmeGalleryBundle
AcmeGalleryBundle
捆绑包到AcmePageBundle
上的模板文件class DisplayController extends Controller
{
public function embedAction($galleryId)
{
$gallery = $this->getDoctrine()->getRepository('AcmeGalleryBundle')->find($galleryId);
if (!$gallery) {
throw $this->createNotFoundException('Gallery could not be found');
}
return $this->render('AcmeGalleryBundle:Display:embed.html.twig', array(
'gallery' => $gallery,
));
}
}
<div class="gallery">
{% for photo in gallery.photos %}
<a href="{{ photo.webPath }}" rel="shadowbox[gallery];">
<img src="{{ photo.webPath }}" height="100" width="100">
</a>
{% endfor %}
</div>
{# ... extra HTML content #}
<h2>Gallery</h2>
{{ render(controller('AcmeGalleryBundle:Display:embed', {
'galleryId': 123
})) }}
{# rest of the HTML content #}
尝试渲染使用AcmePageBundle:Default:index.html.twig
的网页时,我得到了
在AcmePageBundle中呈现模板(&#34; Class&#39; AcmeGalleryBundle&#39;不存在&#34;)期间抛出异常:默认:第18行的index.html.twig。 / p>
但当然,AcmeGalleryBundle
确实存在。我怀疑我在某个地方错过了一个范围问题。
AcmeGalleryBundle
文件中载有AppKernel.php
use Acme\GalleryBundle
添加到AcmePageBundle.php
捆绑文件的顶部。我错过了什么明显的东西吗?
答案 0 :(得分:0)
我的错误在于这一行:
$gallery = $this->getDoctrine()->getRepository('AcmeGalleryBundle')->find($galleryId);
命令getRepository('AcmeGalleryBundle')
需要包含我正在尝试加载存储库的实体。正确的代码是:
$gallery = $this->getDoctrine()->getRepository('AcmeGalleryBundle:Gallery')->find($galleryId);
我错误地认为这是render(controller(...))
功能的问题。在修复之后,一切都按预期工作。下次我应该仔细查看堆栈跟踪!