我有以下formhelper代码,其中$ spot是一个变量数组:
echo $form->create('Spot', array('controller' => 'spots', 'action' => 'view'));
echo $form->hidden('spotdata', array('value' => $spot));
echo $form->end('View');
当我在控制器中print_r($ this-> data)时,spotdata为空。 formhelper可以接受数组的值吗?有没有办法做到这一点?请让我知道,谢谢!
答案 0 :(得分:1)
不,因为它回显了HTML输入标记。该值必须是一个字符串或可以转换为字符串的东西。查看您的HTML源代码。
答案 1 :(得分:1)
我注意到您正在将数据发送到视图。将ID发送到视图更加惯用,数据可以从数据库重新加载。在这种情况下,链接就足够了:
echo $this->Html->link('View',
array('controller' => 'spots', 'action' => 'view', $spot['Spot']['id']));
如果您尝试保持页面之间的状态,您可能会发现使用SessionComponent
执行此操作更容易,更安全(绝不相信从客户端发回的数据)。在您的控制器方法中,这很简单:
$this->Session->write('Spot.spotData', $spot);
和
$spot = $this->Session->read('Spot.spotData');
回读数据。
答案 2 :(得分:0)
您可以serialize()数组并将其放在一个隐藏的输入中,而不是循环遍历数组并回显每个键。之后你可以deserialize()