0

テキストボックスがあり、コントローラーのテキストボックスに入力された値を使用したい-リンクのクリック時(フォーム送信ではない)。だから私はポストリンクを使用して送信する必要があると思います。しかし、ポストリンクでそのテキストボックスの値を取得するにはどうすればよいですか? 以下は私のコードです:

<?php echo $this->Form->postLink(
            'Get Coords',
            array('action' => 'test', $this->request->data['Rideoffer']['PickFrom'])
            );
        ?>

でエラーが発生し$this->request->data['Rideoffer']['PickFrom']ます。data['Rideoffer']['PickFrom'] は、私の CakePHP テキストボックスの名前です (私は firfox inspect 要素で見ました)。テキストボックスの値を取得するにはどうすればよいですか?

4

1 に答える 1

0

このFormHelper::postLinkメソッドには、テキスト ボックスの値を取得する方法がありません。このpostLinkメソッドは、<a>Javascript を使用して非表示のフォームを送信するリンク要素を作成するだけです。postLink吐き出すものの例を次に示します。

<form action="/posts/delete/16" name="post_511c870e05d25" id="post_511c870e05d25" style="display:none;" method="post">
<input type="hidden" name="_method" value="POST"/>
</form>
<a href="#" onclick="if (confirm(&#039;Are you sure you want to delete # 16?&#039;)) { document.post_511c870e05d25.submit(); } event.returnValue = false; return false;">Delete</a>

ご覧のとおり、<a>要素をクリックすると、入力が非表示のフォームが送信されます。パラメータを に渡すことで、この入力が送信する値を変更できpostLinkますが、ユーザーが何か特別なことをせずに変更してフォームで送信できるテキストボックスの値を動的に取得することはできません。

似たようなオプションが 2 つあります (1 つは Javascript が少し重くなっています)。

1)Javascriptを使用しているため、Javascript(またはjQuery)を使用して、非表示の入力の値をユーザーが入力したものに動的に変更できます。さらに良いことに、ユーザーがリンクをクリックしたときに Javascript/jQuery が非表示のフォーム入力のみを更新するようにすることもできます。postLink関数を使用せずに、すべてのフォーム操作を自分で (または Cake の FormHelper を使用して) 行う方が簡単な場合があることに注意してください。

2)postLinkメソッドをまったく使用しないでください。テキストボックス入力で通常のフォームを作成し、その動作を模倣postLinkします。具体的には、フォームに送信ボタンがありません。基本的には、吐き出すものをコピーするだけです。

<form action="test" name="UNIQUE_ID" id="UNIQUE_ID" method="post">
<input type="text" name="data[RideOffer][PickFrom]" value="POST"/>
</form>
<a href="#" onclick="if (confirm(&#039;This will submit the form.&#039;)) { document.UNIQUE_ID.submit(); } event.returnValue = false; return false;">Click</a>

上記の例ではUNIQUE_ID、同じ値として一致する必要があり、タグstyle="display:none;"からも削除する必要があることに注意してください。<form>

于 2013-02-14T07:13:39.773 に答える