Drop down menu 从concrete5中的下拉列表中获取当前选定的项

Drop down menu 从concrete5中的下拉列表中获取当前选定的项,drop-down-menu,concrete5,Drop Down Menu,Concrete5,我想用concrete5解决一个问题 用户希望块能够显示从数据库中选择的书籍的信息 在选择菜单之前,一切都准备就绪。我可以用数据库中的标题填充下拉列表,但当选择一本书时,块仅显示选择菜单选项数组的索引值 例如,如果数组看起来像 0=>哈利波特与火焰杯, 1=>权力游戏 用户从列表中选择《哈利·波特》,区块只显示“0”作为给定标题。我确信我可以通过使用函数查询数据库来分配正确的值来解决这个问题。但我似乎无法从选择菜单中获取选定项,只能获取其数组索引值 有什么想法吗 代码如下 add.php

我想用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->$\u请求['bookselect']
但它不起作用,几小时后我就不知所措了

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

你有两个选择

  • 从数据库中的索引中查找值
  • 将索引更改为包含值eg()

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

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

    现在,在块的视图模板中,echo可以使用
    $title
    变量,它将包含书籍的名称。

    选择框的文档如下所示

    $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;'))
    

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

    那么该值不是解决方案吗?但是,我现在用一个数组填充选择框,该数组使用行的唯一标识符作为键,标题列作为值。但当我单击“添加”时,数据库仍然会附加空值。如果没有,恐怕数据库中没有任何内容。当我执行add脚本并进行选择,然后在块实例表上运行selectall查询时,我得到了全面的空值(尽管主键是空的),我很难理解您的情况。如果从块的controller.php、add.php、edit.php和view.php文件中提供实际代码,可能会更清楚。