首页 > 解决方案 > 如何从位于“/资源/视图”?

问题描述

我正在为我之前作为可移植包制作的 Symfony Web 项目创建一个应用程序。我创建了一个“media.html.twig”模板并希望它被 render() 辅助函数调用。

我已经激活了 /config/bundles.php 中的包

App\OM\MediaManagerBundle\OMMediaManagerBundle::class => ['all' => true],

并按照本网站https://symfony.com/doc/current/bundles.html上的说明设置 Symfony-Bundle 文件夹结构和所需文件。如本网站https://symfony.com/doc/4.1/bundles/best_practices.html#resources所述,我已在路径前加上“@MediaManager” 。

这是我的控制器类:

<?php


namespace App\OM\MediaManagerBundle\Controller;


use App\OM\MediaManagerBundle\Form\ImageType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

class MediaManagerController extends AbstractController
{
    const TEMPLATE = "@MediaManager/MediaManager/media.html.twig";

    /**
     * @Route("/media/", name="om_mediamanager_media")
     * */
    public function index(Request $request)
    {
        $form = $this->createForm(ImageType::class);

        return $this->render(self::TEMPLATE,
            [
               'form'   =>  $form->createView(),
            ]);
    }
}

这就是我的文件夹结构在 src 中的样子: https ://i.imgur.com/9UomIEK.png

我希望能显示我的表单,但我收到一条错误消息:

There are no registered paths for namespace "MediaManager".

我知道它从 /templates 文件夹开始查找,所以我尝试将路径设置为“../src/OM/MediaManagerBundle/Resources/views/MediaManager/media.html.twig”但得到了

Looks like you try to load a template outside configured directories (../src/OM/MediaManagerBundle/Resources/views/MediaManager/media.html.twig).

当我在 /templates 文件夹中移动“media.html.twig”模板时,该代码确实有效,但我希望它会破坏捆绑包的可移植性,因此不想这样做。

如何从我的 OMMediaManagerController 类中访问此模板?我是否以正确的方式使用 Symfony Bundles?一般来说,还有更多关于 Bundles 的文档吗?我发现官方网站提供的非常缺乏。

标签: phpsymfony

解决方案


推荐阅读