2014-11-04 54 views
0

我有一个名为$ todovalues和窗体的对象。我需要通过窗体传递整个todovalues对象。如何在PHP中将对象传递给隐藏窗体?

我的形式看起来像 -

<form action="" method="post"> 
<input class="todobuttons" type="submit" name="delete" value="delete"> 
<input class="todobuttons" type="submit" name="edit" value="edit"> 
<input type="hidden" name="post_item_info" 
value="<?php echo serialize($todovalues); ?>"> 
</form> 

我可以使用类似回声$ todovalues->文本访问$ todovalues值。

我试图使用序列化,json_encode和两者的混合。但是,当我尝试访问帖子值时,它始终为空。

有没有办法让我的对象,并将其添加到隐藏的输入,而不必为每个我想要的对象创建单独的隐藏输入?

json_encode($todovalues); 
json_encode(serialize($todovalues)); 
serialize($todovalues); 

以上都没有功能。没有简化的方法来首先传递整个对象而无需迭代对象?看起来像浪费空间必须为对象中的每个项目创建隐藏的输入。

编辑 -

当我使用json_encode()我看到下面的,所以我知道它应该存在 -

<input type="hidden" name="post_item_info" value="{" id_auto":"3","id":"1","id_list":"1","completed":"0","incident_notes":"apple"}"=""> 
+0

我会使用'json_encode()'。当您查看页面的来源是否填充了该值?如果没有,还有另一个问题。 – 2014-11-04 20:19:12

+0

您应该在对象中创建一个方法,将所有相关值作为数组返回,然后使用json_encode进行处理。向我们展示班级的结构也会有所帮助。 请记住,静态成员不是序列化的。 – vcanales 2014-11-04 20:21:01

+0

@JayBlanchard更新了json_encode的内容 – ILikeTurtles 2014-11-04 20:22:10

回答

0

可能的话,你尝试编码对象。尝试编码的数组:

json_encode((array) $todovalues); 

UPD。或者,它可以是因为你的HTML看起来像这样:

<input value="{"id":3....}"> (a lot of ") 

您可以尝试base64_encode()

+0

刚才看到了。我切换到单引号,但base64可能是一个更好的主意。 – ILikeTurtles 2014-11-04 20:32:22

+0

我添加了base64_encode,现在它工作的很好。谢谢一堆。 – ILikeTurtles 2014-11-04 20:40:13

0

的json_encode被打破,由于我使用双引号创建的输入的事实。

系统锯 -

值= “{” stuffGoesHere“

我切换到单引号 -

值= '{ ”stuffGoesHere“'

它现在完美。