php - SilverStripe - 使用函数获取页面的表单值

标签 php mysql silverstripe

在 SilverStripe 3.1 中,我试图让我的 Hello Bar 选择器的值可以被站点范围内的页面访问。

我已经创建了下拉字段来选择 HomePage.php 上的内容,因此我可以毫无问题地引用主页上的字段值。下拉列表的值将通知要运行的 if block 以及用什么填充问候栏。

Page.php

..//

public function HelloBarSelector() {
    $Selector = HomePage::get()->HelloBarSelect;
    return $Selector;
}

public function ShowHelloBar($itemID = 1) {
    $HelloBars = HelloBar::get()->byID($itemID);
    $HelloBars = $HelloBars->HelloBarText;
    return $HelloBars;
}

..//

包含/HelloBar.ss

<% if $HelloBarSelector %>
<section class="hello">
    <p class="hello__text">$ShowHelloBar($HelloBarSelector)</p>
</section>
<% end_if %>

HomePage.php

..//

public function getCMSFields(){
    $fields = parent::getCMSFields();
    $fields->addFieldToTab('Root.HelloBar', GridField::create(
        'HelloBars',
        'Hello Bar Text', 
        $this->HelloBars(),
        GridFieldConfig_RecordEditor::create()
    ));
    $fields->addFieldToTab('Root.HelloBar', DropdownField::create(
            'HelloBarSelect',
            'Choose Your Hello Bar (this will be sitewide)',
            HelloBar::get()->map('ID', 'HelloBarText')
        )
        ->setEmptyString('(none)'));
    return $fields;
}

..//

我在主页上使用 $HelloBarSelect 访问该值没有任何问题,并且所有工作都按预期进行。看来问题出在使用我的函数访问 $HelloBarSelect

最佳答案

HomePage::get() 将返回 HomePage DataObject 的 DataList,因此您无法访问 HelloBarSelect。

HomePage::get()->First()HomePage::get_one()(假设那里只有一个主页)将返回一个 DataOject。因此,如果字段正确,您可以使用 HomePage::get()->First()->HelloBarText

提示:

使用 Debug::dump(HomePage::get()) 查看您正在操作的内容。转储数据以查看您的工作总是好的。

另请阅读:http://doc.silverstripe.org/en/developer_guides/model/或观看这些视频 http://www.silverstripe.org/learn/lessons/

关于php - SilverStripe - 使用函数获取页面的表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29552650/

相关文章:

php - Suitecrm - pdf 模板中的 php 代码

php - 如何使用 mysql PDO 和 OR 表达式计算字段数量?

php - 当达到一定的购物车数量时添加促销产品

php - 在 PHP 中,如何从 mysql 数据库中检索文件并作为电子邮件附件发送?

一个表中最常出现在另一表中的 MYSQL 条目

php - SilverStripe 动态 ModelAdmin 网址和标题不起作用

javascript - 基于XML文件的页面生成(PHP、Jquery)

mysql - 为什么这是一个重复的键?

php - 从 SilverStripe UploadField 中删除 "Edit"和 "Delete from files"

php - SilverStripe - 自定义分面搜索导航