gpt4 book ai didi

php - 如何使用 QuickForm 添加禁用的选择选项?

转载 作者:行者123 更新时间:2023-12-04 16:00:35 24 4
gpt4 key购买 nike

我有使用 QuickForm 的代码,它使用以下内容创建一个选择小部件:

$form->addElement( 'select', 'state_id', 'State:', statesArray() );

statesArray() 查询数据库以获取可用状态并返回一个关联数组,其中包含链接到状态名称的 ID。我在整个解决方案中使用了类似的技术。

我想做的是在这个数组前面加上两个禁用的选项,这样默认情况下选择菜单会显示类似“请选择一个州”的内容,后跟一个破折号,这两个选项都是禁用的。如果我不使用 QuickForm,则选择将具有以下前两个选项:

  <option value="" disabled="disabled">Select a State</option>
<option value="" disabled="disabled">-</option>

这两个选项都被禁用,如果用户将选项保留在第一个值上,则选择小部件会提交一个空值,该空值会被表单检查代码设为无效。

有没有办法用 QuickForm 做到这一点?

谢谢,查克

最佳答案

好的,在更深入地研究 QuickForm 文档之后,我明白了这一点。解决方案是不使用数组填充选择小部件,而是手动构建选择元素并将其添加到表单中。

最初,我有这个:

function dbArray( $tableName, $fieldName ) {
$query = <<< EOT
SELECT `id`, `$fieldName`
FROM `$tableName`
ORDER BY `$fieldName`
EOT;

$link = connectToDatabase();
$result = mysql_query( $query, $link );
while ( $rec = mysql_fetch_assoc( $result ) );
{
$array[$rec['id']] = $rec[$fieldName];
}

return $array;
}

function statesArray() {
return dbArray( 'states', 'name' );
}

$form = new HTML_QuickForm( 'account', 'POST' );
$form->addElement( 'select', 'state_id', 'State:', statesArray() );

我做了一个版本,在将数组返回给调用代码之前,array( 'none' => 'Please select a State' ) 被添加到 dbArray 调用之前,但这并没有使该选项被禁用。添加规则以确认选择是数字是解决方法 ($form->addRule( 'state_id', 'You must select a state.', 'numeric' ))。但我仍然不喜欢它是可选的。这是我找到的解决方案。

function statesSelect() {
$select = HTML_QuickForm::createElement( 'select' );
$select->addOption( 'Select a State', '', array( 'disabled' => 'disabled' ) );
$select->addOption( '-', '', array( 'disabled' => 'disabled' ) );

$statesArray = dbArray( 'states', 'name' );
foreach ( $statesArray as $id => $name ) {
$select->addOption( $name, $id );
}

return $select;
}

$form = new HTML_QuickForm( 'account', 'POST' );
$form->addElement( statesSelect() );
$form->addRule( 'state_id', 'You must select a state.', 'required' );

我希望这对其他人有帮助。 :)

关于php - 如何使用 QuickForm 添加禁用的选择选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2138089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com