从concrete5的下拉列表中获取当前选定的项目

时间:2013-06-27 18:42:05

标签: drop-down-menu concrete5

我正在尝试使用concrete5解决问题 用户希望块能够显示从数据库中选择的书籍的信息 一切都到位,直到选择菜单我可以用数据库中的标题填充下拉列表但是当选择一本书时,该块只显示选择菜单的选项数组的索引值。

例如,如果数组看起来像

0 =>哈利·波特与火焰杯, 1 =>权力的游戏

并且用户从列表中选择哈利波特,块仅显示“0”作为给定标题。我有理由相信我可以通过使用函数通过查询数据库来分配正确的值来解决这个问题。但我似乎无法从选择菜单中获取所选项目的数组索引值。

有什么想法吗?

代码如下

add.php

    <?php defined('C5_EXECUTE') or die(_("Access Denied.")) ?>
<?php $titles = $controller -> getTitles() ?>
<div class="ccm-ui">
    <?php echo $form->select('bookselect', $titles, 1, array('style' => 'width: auto;')) ?>

</div>

我尝试使用$ title = $this -> $_REQUEST['bookselect'];但它没有用,现在几个小时后我不知所措

3 个答案:

答案 0 :(得分:1)

由于您已经从控制器功能填充了标题列表,因此您只需将其重新用于块的“视图”即可。所以在你的块控制器中,找到view()函数(如果它不存在则添加它),并执行以下操作:

$titles = $this->getTitles();
$this->set('title', $titles[$bookselect]);

现在在您的块的视图模板中,您将有$title变量可用于回显,它将包含该书的名称。

答案 1 :(得分:0)

HTML Select元素只传递它的数组索引(或值属性),它不会向你发送值,这不是HTML的工作方式。

你有几个选择。

  1. 从数据库中的索引中查找值。
  2. 更改索引以包含值,例如()

答案 2 :(得分:0)

选择框的文档如下,

$form->select($name, $options, $selectedValue, $tagAttributes);

在你的例子中,

$form->select('bookselect', $titles, 1, array('style' => 'width: auto;'))

这应该选择权力游戏作为选定的书,(假设使用的值是数组的键),你可以尝试将选项作为关联数组传递

array(
'Harry Potter and the Goblet of Fire'=>'Harry Potter and the Goblet of Fire',
'Game of Thrones'=>'Game of Thrones'
)

这样,传递的值将是值,并且在标题中传回应该有助于选择该选项。

$form->select('bookselect', $titles, $title, array('style' => 'width: auto;'))

我没有对此进行测试,因此可能需要对标题进行一些卫生处理才能将其用作关键。