Php 如何在Symfony 2中嵌入子命名空间控制器中的操作?
我试图从Symfony 2中的细枝视图中呈现子命名空间控制器中的操作 问题是:渲染辅助对象找不到控制器/操作,因为它位于控制器下方的命名空间中 这是我的控制器: src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.phpPhp 如何在Symfony 2中嵌入子命名空间控制器中的操作?,php,symfony,twig,Php,Symfony,Twig,我试图从Symfony 2中的细枝视图中呈现子命名空间控制器中的操作 问题是:渲染辅助对象找不到控制器/操作,因为它位于控制器下方的命名空间中 这是我的控制器: src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php namespace Acme\Bundle\TestBundle\Controller\FirstModule; class ExampleController extends Control
namespace Acme\Bundle\TestBundle\Controller\FirstModule;
class ExampleController extends Controller
{
public function exampleAction(Request $request)
{
return $this->render('AcmeTestBundle:FirstModuleExample:example.html.twig');
}
public function embedAction(Request $request)
{
return $this->render('AcmeTestBundle:FirstModuleExample:embed.html.twig');
}
}
我的看法是:
src/Acme/Bundle/TestBundle/Resources/views/FirstModuleExample/example.html.twig
{% render "AcmeTestBundle:Example:embed" %}
// or
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %}
// or
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\ExampleController:exampleAction" %}
我已经阅读了文档,但不知道如何处理子命名空间中的控制器
谢谢。我认为您应该能够使用反斜杠符号,但我没有尝试过,因为我练习将所有控制器放在一个名称空间中(如果您有很多控制器,这是很糟糕的) 大概是这样的:
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %}
我认为您应该能够使用反斜杠表示法,但我没有尝试过,因为我练习将所有控制器放在一个名称空间中(如果有很多控制器,这是很糟糕的) 大概是这样的:
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %}
你试过这个吗
{% render "AcmeTestBundle:FirstModule/Example:embed" %}
还是这个
{% render "AcmeTestBundle:FirstModule\\Example:embed" %}
你试过这个吗
{% render "AcmeTestBundle:FirstModule/Example:embed" %}
还是这个
{% render "AcmeTestBundle:FirstModule\\Example:embed" %}
这两种方法都应该有效。请记住,字符串中的反斜杠需要转义(即,加倍) 或
这两种方法都应该有效。请记住,字符串中的反斜杠需要转义(即,加倍) 或
试过了,没用<代码>在第1行的AcmeTestBundle:FirstModule:example.html.twig中呈现模板时引发异常(“您请求了不存在的服务”acmebundletestbundlecontrollerfirstmoduleexample”。尝试过,但未成功<代码>在第1行的AcmeTestBundle:FirstModule:example.html.twig中呈现模板时引发异常(“您已请求不存在的服务”acmebundletestbundlecontrollerfirstmoduleexample”。,页面已呈现并在页面上出现以下错误:
致命错误:无法在中重新声明类Acme\Bundle\TestBundle\Controller\FirstModule\ExampleController…
清除缓存后,我遇到另一个错误:在呈现模板期间引发异常(“自动加载程序预期的类”)Acme\Bundle\TestBundle\Controller\FirstModule/ExampleController“将在文件中定义”。/src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php。找到了该文件,但类不在其中,类名或命名空间可能有输入错误。”)在第1行的AcmeTestBundle:FirstModuleExample:example.html.twig中。
我用另一个示例更新了我的答案(尝试用名称空间分隔符替换目录分隔符)。很有趣,页面已呈现并在页面上出现以下错误:致命错误:无法在中重新声明类Acme\Bundle\TestBundle\Controller\FirstModule\ExampleController…
清除缓存后,我遇到另一个错误:在呈现模板期间引发异常(“自动加载程序预期的类”)Acme\Bundle\TestBundle\Controller\FirstModule/ExampleController“将在文件中定义”。/src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php。找到了该文件,但类不在其中,类名或命名空间可能有输入错误。”)在第1行的AcmeTestBundle:FirstModuleExample:example.html.twig中。
我用另一个示例更新了我的答案(尝试用名称空间分隔符替换目录分隔符)。谢谢你的帮助!可惜Symfony没有在文档中包括这一点。他们有,只是没有在那一页上。在您使用了他们的视图/控制器系统之后,您可以通过Bundle:controller:Action
或FQCN::actionName
轻松地引用它们,谢谢您的帮助!可惜Symfony没有在文档中包括这一点。他们有,只是没有在那一页上。在您使用了他们的视图/控制器系统之后,您可以通过Bundle:controller:Action
或FQCN::actionName