この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('Are you sure you want to delete # 16?')) { 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('This will submit the form.')) { document.UNIQUE_ID.submit(); } event.returnValue = false; return false;">Click</a>
上記の例ではUNIQUE_ID
、同じ値として一致する必要があり、タグstyle="display:none;"
からも削除する必要があることに注意してください。<form>