Php 无法在Silverstripe中识别模板
我不知道我的老开发人员是如何做到的,但他能够创建一些在我的网站上工作的自定义模板。我正试图自己创建一个,但没有成功,我的老开发人员似乎太忙了,没有告诉我如何做 我在/templates/Layout中有模板 我的布局(InstitutionCoursesPage.ss)具有以下代码:Php 无法在Silverstripe中识别模板,php,templates,model-view-controller,silverstripe,Php,Templates,Model View Controller,Silverstripe,我不知道我的老开发人员是如何做到的,但他能够创建一些在我的网站上工作的自定义模板。我正试图自己创建一个,但没有成功,我的老开发人员似乎太忙了,没有告诉我如何做 我在/templates/Layout中有模板 我的布局(InstitutionCoursesPage.ss)具有以下代码: <% include HeaderBar %> <div class="container"> <div class="row"> $setHasLeft(true)
<% include HeaderBar %>
<div class="container">
<div class="row">
$setHasLeft(true)
<div class="$LeftCssClass">
<% include SideNavigation %>
<% loop $WidgetArea(LeftSideBar) %>
$WidgetHolder
<% end_loop %>
</div>
<div class="$CenterCssClass">
<% include PageHeader %>
<% if $Content %>
<article class="content typography glass">
$Content
<div>abc</div>
</article>
<% loop $DisplayCourses %>
<% end_loop %>
<% end_if %>
<% include InstitutionCoursesList %>
$PageComments
</div>
<% include RightSideBar %>
</div>
</div>
<% include FooterBar %>
<?php
class InstitutionCoursesPage extends Page
{
}
class InstitutionCoursesPage_Controller extends Page_Controller
{
public function DisplayCourses()
{
return Qualification::get();
}
}
$setHasLeft(真)
$WidgetHolder
$Content
abc
$PageComments
用于创建页面类型的PHP文件(InstitutionCoursesPage.PHP)存储在/code/PageTypes中,其代码如下:
<% include HeaderBar %>
<div class="container">
<div class="row">
$setHasLeft(true)
<div class="$LeftCssClass">
<% include SideNavigation %>
<% loop $WidgetArea(LeftSideBar) %>
$WidgetHolder
<% end_loop %>
</div>
<div class="$CenterCssClass">
<% include PageHeader %>
<% if $Content %>
<article class="content typography glass">
$Content
<div>abc</div>
</article>
<% loop $DisplayCourses %>
<% end_loop %>
<% end_if %>
<% include InstitutionCoursesList %>
$PageComments
</div>
<% include RightSideBar %>
</div>
</div>
<% include FooterBar %>
<?php
class InstitutionCoursesPage extends Page
{
}
class InstitutionCoursesPage_Controller extends Page_Controller
{
public function DisplayCourses()
{
return Qualification::get();
}
}
我不确定您是否粘贴错误,但您的循环中没有任何内容:
<% loop $DisplayCourses %>
<% end_loop %>
也许
应该进入该循环?我不确定您是否粘贴错误,但您的循环中没有任何内容:
<% loop $DisplayCourses %>
<% end_loop %>
也许
会进入这个循环?好吧,这里有很多可能出错
首先,如果有课程要显示,那么模板/控制器的这一部分似乎还可以。另一个可能出错的地方是模板没有完全加载。因此,请放置一些无论发生什么都会显示的文本(例如,在模板文件的顶部)。如果没关系,让我们看看你的模板,然后从HTML中删去:
<% include HeaderBar %>
$setHasLeft(true)
<% include SideNavigation %>
<% loop $WidgetArea(LeftSideBar) %>
$WidgetHolder
<% end_loop %>
<% include PageHeader %>
<% if $Content %>
$Content
<% loop $DisplayCourses %>
<% end_loop %>
<% end_if %>
<% include InstitutionCoursesList %>
$PageComments
<% include RightSideBar %>
<% include FooterBar %>
如果有人对模板系统有更多的了解,可以指出这个系统的复杂性,我将非常感激…好的,这里有很多可能出错
首先,如果有课程要显示,那么模板/控制器的这一部分似乎还可以。另一个可能出错的地方是模板没有完全加载。因此,请放置一些无论发生什么都会显示的文本(例如,在模板文件的顶部)。如果没关系,让我们看看你的模板,然后从HTML中删去:
<% include HeaderBar %>
$setHasLeft(true)
<% include SideNavigation %>
<% loop $WidgetArea(LeftSideBar) %>
$WidgetHolder
<% end_loop %>
<% include PageHeader %>
<% if $Content %>
$Content
<% loop $DisplayCourses %>
<% end_loop %>
<% end_if %>
<% include InstitutionCoursesList %>
$PageComments
<% include RightSideBar %>
<% include FooterBar %>
如果对模板系统有更多了解的人能够指出该系统的复杂性,我将不胜感激……有一个调试信息,可以在开发模式下将所有模板的文件名插入到呈现的输出中,请参阅我们在2016年的StripeCon中的演讲:
基本上,将其放入config.yml文件并刷新:
---
Only:
environment: 'dev'
---
SSViewer:
source_file_comments: true
然后,输出应该类似于:
通过这种方式,您可以查看是否拾取了模板。还要确保您的类名或模板文件名没有输入错误
注意:这破坏了输出纯模板JSON的ajax调用
有一个调试信息可能会在开发模式下将所有模板的文件名插入到呈现的输出中,请参阅2016年StripeCon中的讨论:
基本上,将其放入config.yml文件并刷新:
---
Only:
environment: 'dev'
---
SSViewer:
source_file_comments: true
然后,输出应该类似于:
通过这种方式,您可以查看是否拾取了模板。还要确保您的类名或模板文件名没有输入错误
注意:这破坏了输出纯模板JSON的ajax调用
即使我在里面放了什么东西,也不会被认出来。我尝试向文件中添加一些html,然后进行刷新,但它没有出现在页面的源代码中。不确定为什么文件本身无法识别。即使我在其中放入了一些内容,也无法识别。我尝试向文件中添加一些html,然后进行刷新,但它没有出现在页面的源代码中。不确定为什么文件本身无法识别。我做了一个小测试。你看到我的代码里写的是“”?它也显示在源代码中。我将“玻璃”添加到类列表中,使其成为“内容排版玻璃”。刷新页面应该在源代码中显示glass,但它没有。因此,它甚至不读取文件,不管课程是否有效(这是因为我在主页上有一个下拉菜单,显示课程列表)。它仍然在if中,但好的,似乎模板没有加载。现在我们在乡下,对我来说也有点雾。我会更新我的答案我做了一个小测试。你看到我的代码里写的是“”?它也显示在源代码中。我将“玻璃”添加到类列表中,使其成为“内容排版玻璃”。刷新页面应该在源代码中显示glass,但它没有。因此,它甚至不读取文件,不管课程是否有效(这是因为我在主页上有一个下拉菜单,显示课程列表)。它仍然在if中,但好的,似乎模板没有加载。现在我们在乡下,对我来说也有点雾。我会更新我的答案