Silverstripe 4不';使用名称空间时找不到模板

Silverstripe 4不';使用名称空间时找不到模板,silverstripe,silverstripe-4,Silverstripe,Silverstripe 4,关于模板应该如何构造的信息似乎很少。我之前问过这个问题,但我认为我可以通过代码示例更好地问这个问题,并删除我之前的尝试: mysite/\u config/theme.yml SilverStripe\View\SSViewer: themes: - 'mytheme' - '$default' mysite/code/Page.php <?php use SilverStripe\CMS\Model\SiteTree; class Page extends Si

关于模板应该如何构造的信息似乎很少。我之前问过这个问题,但我认为我可以通过代码示例更好地问这个问题,并删除我之前的尝试:

mysite/\u config/theme.yml

SilverStripe\View\SSViewer:
  themes:
    - 'mytheme'
    - '$default'
mysite/code/Page.php

<?php

use SilverStripe\CMS\Model\SiteTree;

class Page extends SiteTree {

}
<?php

use SilverStripe\CMS\Controllers\ContentController;

class PageController extends ContentController {

}
<?php

namespace Vendor\MainSite;

use Page;

class HomePage extends Page {

}
<?php

namespace Vendor\MainSite;

use PageController;

class HomePageController extends PageController {

}
假设Page.ss包含$Layout。我遇到的问题是Page.ss从未被提起过。我已经确认Silverstripe正在加载vendor/Silverstripe/framework/templates/Silverstripe/Control/Controller.ss。我尝试了Page.ss的不同位置,包括在同一个供应商目录中。我还将整个结构移动到/mysite/templates


我获得上述内容加载模板的唯一方法是从HomePage.php中删除名称空间,并简单地遵循模板的SS3结构。

看起来不错。您是否进行了
dev/build
?如果您还没有,您还应该在
主题/mytheme/templates/Layout
中放置一个
页面.ss
,这样您就可以获得一个登录表单来显示多个开发/构建。以及手动销毁/tmp/cache。这根本不起作用。不幸的是,这是不可复制的。你确定你已经完全按照项目中的内容包含了所有内容吗?例如,您的供应商实际上是“供应商”吗?我想我刚才发现了这个问题。向这些类添加名称空间会破坏页面本身的类名。因此,这些页面实际上根本没有寻找它们的模板。我不得不使用legacy.yml强制SS将旧的类名更改为命名空间的类名。我也有这个问题,但我发现在命名和登录CMS后运行dev/build,重新保存和发布有问题的页面,就解决了这个问题。
theme
   mytheme
      templates
         **Page.ss**
         Layout
         Includes
         Vendor
            MainSite
               Layout
                  **HomePage.ss**