用户点击提交按钮后,如何将下拉菜单重置为菜单的“空白”选项?我使用的是使用php和HTML设置的MVC,以及 concrete5 库。提前致谢!以下是我到目前为止的情况:
控制器代码:
public function authorize() {
$selectHost = array('' => '');
foreach ($this->host->getHostInfo() as $row) {
if (isset($row['HARDWARE_id'])) {
$selectHost[$row['id']] = $row['host'];
}
}
$this->set('selectHost',$selectHost);
$postCheck=array(array('param' => 'host',
'check' => '^[0-9]{1,50}$',
'error_msg' => 'Invalid Host ID'),
);
$post = scrub($_POST,$postCheck);
if (isset($post['host'])) {
$this->host->authorize($post['host']);
$this->set('test', "<p> The host has successfully been authorized.</p>");
}
else{
$this->set('failed', "<p>Invalid Host ID</p>");
}
}
查看代码:
<form method="post" enctype="multipart/form-data" action="<?=$this->action('authorize')?>">
<?php
$form = Loader::helper('form');
print $form->label('host', 'Host: ');
print $form->select('host', $selectHost);
?>
<?php
print $form->submit('Submit','Submit');
echo $test;
echo $failed;
?>
</form>
答案 0 :(得分:0)
我认为您可以使用(javascript)onsubmit操作扩展表单标记,然后执行重置。
答案 1 :(得分:0)
由于这是表单提交,您只想在视图中更改“下拉框”/选择的值。提交后,您将有一个新的页面加载;所以,在每种情况下,您都希望显示默认值,而不是$selectHost
的当前值
在您看来,请更改此
print $form->select('host', $selectHost);
到这个
print $form->select('host', $selectHost, null);
根据http://www.concrete5.org/documentation/developers/forms/standard-widgets
答案 2 :(得分:0)
我非常肯定的是,没有办法覆盖C5的接受POSTed值并将其作为默认值的愿望。即使像TWR建议的那样,也指定了一个值。 (这通常是一件好事,因为如果页面被POST到并且出现错误,则您不想显示数据库中的值;您希望显示POST中的内容)。
您可以非常轻松地覆盖表单助手。
但是,我建议您在成功提交后进行重定向(不要在错误后重定向 - 然后将POSTed值有用)到页面。您可以使用确认消息重定向到另一个页面或同一页面。有关使用重定向的示例,请参阅https://github.com/concrete5/concrete5/blob/master/web/concrete/core/controllers/single_pages/dashboard/blocks/stacks.php#L23。
这是针对您的问题的最佳做法,但也因为使用您当前的代码,如果有人点击刷新,它会重新保存数据并重新授权主机。
答案 3 :(得分:0)
如果问题是Concrete5表单助手没有按照您的意愿运行,那就不要使用它们 - 而只是使用常规的HTML表单输入。
<form method="post" enctype="multipart/form-data" action="<?=$this->action('authorize')?>">
<label for="host">Host: </label>
<select id="host" name="host">
<?php foreach ($selectHost as $value => $text): ?>
<option value="<?php echo htmlentities($value); ?>"><?php echo htmlentities($text); ?></option>
<?php endforeach; ?>
</select>
<input type="submit" value="Submit" />
<?php
echo $test;
echo $failed;
?>
</form>