在使用Bootstrap + Laravel4的网站中。 在表单中,有一些用户可以单击以选择它的图像。 这是通过一个很好的JQuery插件完成的:http://rvera.github.io/image-picker/
现在它是用html编写的,它正在运行:
<label><span><i class="icon-check"></i></span> Click on a room to select it</label>
<select name="rooms[]" multiple="multiple" class="image-picker show-html">
<option value=""></option>
<option name="1room" data-img-src="assets/img/rooms/singleRoom.jpg" value="Single room">Single room</option>
<option name="2room" data-img-src="assets/img/rooms/2room.jpg" value="Double room">Double room</option>
</select>
我不需要在Laravel4中重写所有这些标记。 但我需要一件事:我必须添加到Input :: old('inputName')以在验证错误的情况下保留值。 这非常重要。 我试过这样做: - 将单个选项的值设置为:{{'Single room',Input :: old('1room')}} - 将select的值设置为{{Input :: old('rooms []')}} 但他们都没有工作。 它没有错误,但原始值不会保留。
有人知道我该怎么做?
非常感谢!
编辑:
在页面顶部打印输出:: old()的值,实际保留房间的值:
array (size=8)
'rooms' =>
array (size=2)
0 => string 'Single room' (length=11)
1 => string 'Double room' (length=11)
'arrival' => string '13/11/2013' (length=10)
'outgoing' => string '11/11/2013' (length=10)
'name' => string 'name' (length=4)
'email' => string 'email' (length=5)
'phone' => string '9999999999' (length=10)
'message' => string 'gjhgjghj' (length=8)
'submit' => string '' (length=0)
关键是如何在表单中显示它们。确切地说,如何根据该数组中包含的值选择一些图像。
EDIT2:
这是如何理解选择哪个选项的选择,感谢@Samuraisoulification:
<?php
if (isset(Input::old()['rooms']))
{
for($i = 0 , $input = Input::old()['rooms'] , $c = count($input) ; $i < $c ; $i++)
{
if($input[$i] == "Single room")
{
echo "Single room selected";
}
if($input[$i] == "Double room")
{
echo "Double room selected";
}
}
}
?>
答案 0 :(得分:1)
这是一个非常不优雅的解决方案,但如果我是正确的应该可行。在选项标签中添加:
<?php
for($i = 0 , $input = Input::old()['rooms'] , $c = count($input) ; $i < $c ; $i++){
if($input[$i] == "<select option's name>"){
echo "selected";
}
}
?>
请注意,$ input和$ c不在比较部分中,因此它们只会被评估一次,从而节省您稍后可能拥有的所有选项的少量时间(如页面加载时间)。这是一个不优雅的解决方案,但由于您允许多个值,我认为这是唯一的方法。给它一个旋转,让我知道它是否有问题!还要确保将此代码放在每个开始标记中!
另外我会说将这一切都浓缩到一行也会更好看。
最后,我认为因为选项与输入不同,value=="{{Input::old}}"
不起作用,因为为了选择它,你必须在其上选择。另外一定要评论这个黑客以供将来参考。