0

我有一个文本框,我希望使用在控制器的文本框中输入的值 - 点击链接(不是表单提交)。所以我假设我必须使用 postlink 提交。但是我如何在 postlink 中获取该文本框的值?以下是我的代码:

<?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 检查元素中看到它)。我如何获得文本框的值?

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,但您不能动态获取用户可以修改的文本框的值,并在不做任何额外操作的情况下将其与表单一起提交。

有两个类似的选项(一个稍微更多的 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 回答