首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Bundle/Resources文件夹移动到Symfony中的子文件夹?

如何将Bundle/Resources文件夹移动到Symfony中的子文件夹?
EN

Stack Overflow用户
提问于 2017-04-29 20:06:02
回答 1查看 803关注 0票数 0

我想将一个Symfony3束构造成子模块。

为此,我想将Bundle/Resources文件夹(带有视图、配置和公共)与控制器类一起移动到子文件夹中。

使用DemoBundle和Messages模块进行示例。目录应该如下所示:

代码语言:javascript
复制
+ DemoBundle
    + Directory
    + Posts
    + Messages
       + Controller
           + MessageController.php
       + Resources
           + config
           + public
           + views
               + listing.html.twig

我可以通过在routing.yml文件中输入这样的条目来移动Controller:

代码语言:javascript
复制
demo-messages:
    resource: "@DemoBundle/Messages/Controller/"
    type:     annotation
    prefix:   /

主计长现在看起来如下:

代码语言:javascript
复制
class MessageController extends Controller {
    /**
     * @Route("/messsages", name="Message")
     */
    public function listingAction(Request $request) {
        return $this->render('listing.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
        ]);
    }
}

当我现在导航到这个路径时,我会得到一个错误:“无法找到模板”。错误说,它仍然在查看/demo/Resources/view,而不是/demo/messages/Resources/views。

问:我能告诉symfony查看/demo/messages/Resources/views文件夹吗?有可能吗?或者我的模板是否在$this->render(.)中寻址?不对?

到目前为止,尝试了以下模板引用版本:

代码语言:javascript
复制
return $this->render('messages/listing.html.twig', [
                'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
            ]);

效果:错误:找不到模板

代码语言:javascript
复制
代码语言:javascript
复制
return $this->render('@DemoBundle/Messages/Resources/views/listing.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
        ]);

行得通!

我之所以为每个子模块选择这个结构而不是一个包,是因为我想在这个包中封装用户界面,而我想在AdminBundle中组织管理界面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 21:37:55

带有名称空间模板引用的Cerads解决方案有所帮助。以下代码起作用:

代码语言:javascript
复制
return $this->render('@DemoBundle/Messages/Resources/views/listing.html.twig', [
            'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
        ]);

这种解决方法的缺点是不再可能使用短手模板引用,并且无法复制资产(CSS、JS等)。不适用于php /控制台资产:安装

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43700012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档