0

我正在尝试使用concrete5解决问题 用户希望一个块能够显示从数据库中选择的书籍的信息 一切都已到位,直到选择菜单 我可以用数据库中的标题填充下拉列表but when a book is selected the block simply displays the index value of the selection menu's options array.

例如,如果数组看起来像

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

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

有什么想法吗?

代码如下

添加.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'];但它没有用,现在几个小时后我不知所措

4

3 回答 3

1

由于您已经从控制器功能填充标题列表,您可以简单地将其重新用于块的“视图”。因此,在您的块控制器中,找到该view()功能(如果它不存在,则添加它),然后执行以下操作:

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

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

于 2013-06-27T19:46:44.823 回答
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;'))

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

于 2013-06-30T21:43:59.390 回答
0

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

你有几个选择。

  1. 从数据库中的索引中查找值。
  2. 更改索引以包含值,例如 ()
于 2013-06-27T19:03:15.980 回答