[PHP和表单]:提交按钮仅在第二次生成正确的链接

时间:2017-10-05 07:46:46

标签: php html forms

我正在努力学习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”。

似乎页面总是落后一步。

1 个答案:

答案 0 :(得分:0)

您的表单action毫无意义。您正在使用post method,但随后将POST参数发送到action。这仅在表单发送后设置,这就是它落后一步的原因。

您现在有两个选择。

  1. 将传递的POST字段作为输入参数移动到表单上,然后检查控制器中的POST字符。

  2. method更改为get并取消操作参数中的查询字符串(这将假设没有敏感数据通过)并为您想要的内容创建隐藏字段通过。