该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
,但您不能动态获取用户可以修改的文本框的值,并在不做任何额外操作的情况下将其与表单一起提交。
有两个类似的选项(一个稍微更多的 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>
标签中删除。