Php SilverStripe 3.6.1-if/else_if语句未在模板中设置正确的字段
我试图在我的主页模板中使用if/else\u if语句来检查两个字段中哪一个有值。根据哪个字段有值,使用所述变量的值设置链接 然而,就目前情况而言,我的设置不起作用。我有一个填写了ImageExternalLink字段的项目,但该语句似乎仍然认为它是一个内部链接 请参见下文——此语句始终将链接设置为内部链接。这几乎就像永远不会被执行的else_一样,尽管我不知道为什么?我觉得我好像是根据文档正确地遵循了设置Php SilverStripe 3.6.1-if/else_if语句未在模板中设置正确的字段,php,if-statement,silverstripe,Php,If Statement,Silverstripe,我试图在我的主页模板中使用if/else\u if语句来检查两个字段中哪一个有值。根据哪个字段有值,使用所述变量的值设置链接 然而,就目前情况而言,我的设置不起作用。我有一个填写了ImageExternalLink字段的项目,但该语句似乎仍然认为它是一个内部链接 请参见下文——此语句始终将链接设置为内部链接。这几乎就像永远不会被执行的else_一样,尽管我不知道为什么?我觉得我好像是根据文档正确地遵循了设置 div class="halfColumn"> <% if $Imag
div class="halfColumn">
<% if $ImageLinkInternalURL.Link %>
<a href="$ImageLinkInternalURL.Link">
<p>Internal Link</p>
</a>
<% else_if $ImageExternalLink %>
<a href="$ImageExternalLink">
<p>External Link</p>
</a>
<% else %>
<img class="dropShadow" src="$Image.URL" style="max-height: 220px;">
<% end_if %>
</div>
div class=“half column”>
以下是HomePageCallout.php文件供参考,其中创建了ImageLinkInternalURL和ImageExternalLink字段:
<?php
class HomePageCallout extends DataObject {
private static $db = array(
'SortOrder' => 'Int',
'ButtonText' => 'varchar',
'Header' => 'varchar',
'ImageExternalLink' => 'varchar',
'Description' => 'HTMLText'
);
static $default_sort = "SortOrder ASC";
// One-to-one relationship with gallery page
private static $has_one = array(
'Image' => 'Image',
'Page' => 'Page',
'ImageLinkInternalURL' => 'SiteTree',
);
// tidy up the CMS by not showing these fields
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeFieldFromTab("Root.Main","PageID");
$fields->removeFieldFromTab("Root.Main","SortOrder");
$fields->addFieldToTab("Root.Main", new NumericField("SortOrder"));
$fields->addFieldToTab("Root.Main", new TextField("ImageExternalLink"), "SortOrder");
return $fields;
}
// Tell the datagrid what fields to show in the table
public static $summary_fields = array(
'ID' => 'ID',
'Header' => 'Header',
'Thumbnail' => 'Thumbnail',
);
// this function creates the thumnail for the summary fields to use
public function getThumbnail() {
return $this->Image()->CMSThumbnail();
}
public function canEdit($member = NULL) {
return true;
}
public function canDelete($member = NULL) {
return true;
}
public function canCreate($member = NULL){
return true;
}
public function canPublish(){
return true;
}
public function canView($member = NULL){
return true;
}
}
$ImageLinkInternalURL.Link
在has\u-one中有一个相关的$ImageLinkInternalURL站点树对象时,总是会返回一些字符串
一种解决方案是,通过检查当前对象的ID,$ImageLinkInternalURLID
来测试当前对象是否与$ImageLinkInternalURLID
对象相关
<div class="halfColumn">
<% if $ImageLinkInternalURLID %>
<%-- we have a has_one, use this --%>
<a href="$ImageLinkInternalURL.Link">
<p>Internal Link</p>
</a>
<% else_if $ImageExternalLink %>
<%-- we have an external link defined --%>
<a href="$ImageExternalLink">
<p>External Link</p>
</a>
<% else %>
<%-- fallback --%>
<img class="dropShadow" src="$Image.URL" style="max-height: 220px;">
<% end_if %>
</div>