【问题标题】:output array to template输出数组到模板
【发布时间】:2014-09-10 19:09:38
【问题描述】:

我正在尝试添加一个带有一系列单选按钮的自定义表单。我需要将一个列表输出到可以循环的模板中。但是当我运行这段代码时,没有任何输出。如果我在循环中添加文本,它只会输出一次。

在我的 page_controller 类中

public function outputArray($array){
    $dl = DataList::create("DataObject");

    foreach ($array as $it) {
        $do = new DataObject();
        $do->Value = $it;
        $do->write();
        $dl->push($do);
    }

    return $dl;
}

public function NumList(){return $this->outputArray(array("0","1","2","3","4","5"));}

在我的模板中

<% loop NumList() %>
    $Value
<% end_loop %>

【问题讨论】:

  • 为什么要输出一个列表到模板中循环遍历?你想做什么?我认为可能有更好的方法来做你想做的事情。
  • 我正在尝试创建一个表单来对事物进行评分。所以每个速率都是一个单独的单选按钮,只是它们的值不同。因此,如果我可以使用循环,那么评级选项的数量可能是任意的。我同意我的解决方案感觉不是最好的方法,但在我的研究中,这似乎是最好的选择。
  • 如果您在控制器中创建表单,您也可以在控制器中创建单选按钮。您是在控制器中还是在模板中仅使用 html 代码创建表单?

标签: forms templates silverstripe


【解决方案1】:

你快到了。我就是这样写的:

public function outputArray($array)
{
    $dl = new ArrayList();

    foreach ($array as $it) {
        $dl->add(array('Value' => $it));
    }

    return $dl;
}

在 SilverStripe 模板中:

<% loop $NumList %>
    $Value
<% end_loop %>

如果你使用 SilverStripe 的 Form 类,你应该看看这个:http://api.silverstripe.org/3.1/class-SelectionGroup.html 这将使您只需在对象上设置一个键->值数组并获取 SilverStripe 呈现的单选按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2019-09-25
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多