Silverstripe 4不';使用名称空间时找不到模板
关于模板应该如何构造的信息似乎很少。我之前问过这个问题,但我认为我可以通过代码示例更好地问这个问题,并删除我之前的尝试: mysite/\u config/theme.ymlSilverstripe 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
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**