Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Symfony 2中嵌入子命名空间控制器中的操作?_Php_Symfony_Twig - Fatal编程技术网

Php 如何在Symfony 2中嵌入子命名空间控制器中的操作?

Php 如何在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

我试图从Symfony 2中的细枝视图中呈现子命名空间控制器中的操作

问题是:渲染辅助对象找不到控制器/操作,因为它位于控制器下方的命名空间中

这是我的控制器: src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php

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