2017-10-05 57 views
0

我正在努力使用PHP和表单。[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: 只是为了把事情说清楚:

一)我输入“666”,然后按提交 - >“”被写入到数据库中。 b)我输入“777”,按提交 - >“666”正在写入数据库,超链接包含“666”而不是“777”。

看起来页面总是落后一步。

+0

您的表单操作没有任何意义。您正在使用post方法,但是然后将POST参数发送给操作。这只是在表单发送后才设置的,所以难怪它落后了一步。将它作为输入参数移动到窗体上,然后检查控制器中的POST变量 –

+0

好的,那已经帮了我! – Dawko

+0

我已经在这种情况下发布了这个答案,所以我们可以进一步评论,或者您可以接受答案,以便它不会显示在未答复的提要中。 –

回答

0

您的表格action没有任何意义。您正在使用postmethod,但随后将POST参数发送到action。这只是在表单发送之后才设置的,这就是为什么它落后了一步。

您现在有两种选择。

  1. 移动通过POST字段作为窗体上的输入参数,并为您在您的控制器POST瓦尔代替。

  2. method更改为get并废除操作参数中的查询字符串(假设没有敏感数据正在传递)并为您想要传递的内容创建隐藏字段。

相关问题