2017-10-05 59 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並廢除操作參數中的查詢字符串(假設沒有敏感數據正在傳遞)併爲您想要傳遞的內容創建隱藏字段。

相關問題