我正在努力学习PHP和表格。
</div><div class="page-header">
<h2><?= t('Ticker settings for project "%s"', $project['name']) ?></h2>
</div>
<div>
<form id= "ticker" method="post" action="<?= $this->url-
>href('TickerController', 'set_ticker', array('project_id' =>
$project['id'], 'ticker_text' => $_POST['textbox_ticker_text'])) ?
>&plugin=Ticker">
<?= t('Ticker text:') ?><br>
<input type="text" id="textbox" accept-charset="UTF-8"
name="textbox_ticker_text" value="<?php echo $project['ticker_text'];?>">
<?= $this->modal->submitButtons();?>
</form>
</div>
好的,这是问题所在: 我第一次按下提交按钮 - 正在生成错误的链接。它不包含文本框“textbox_ticker_text”。再次按下“提交”按钮后,文本将包含在链接中。仍然是第二次按下按钮时,第一次的文本将被提供给“TickerController”并写入数据库。
我无法弄清楚导致这种奇怪行为的原因。 谁能给我一个提示?
PS: 只是为了说清楚:
a)我输入“666”并按提交 - &gt; “”写入数据库。
b)我输入“777”并按提交 - &gt; “666”正被写入数据库,超链接包含“666”而不是“777”。
似乎页面总是落后一步。
答案 0 :(得分:0)
您的表单action
毫无意义。您正在使用post
method
,但随后将POST
参数发送到action
。这仅在表单发送后设置,这就是它落后一步的原因。
您现在有两个选择。
将传递的POST
字段作为输入参数移动到表单上,然后检查控制器中的POST
字符。
将method
更改为get
并取消操作参数中的查询字符串(这将假设没有敏感数据通过)并为您想要的内容创建隐藏字段通过。