0

在使用 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') }} - 将选择的值设置为 {{ Input::old('rooms []') }} 但它们都不起作用。它没有给出错误,但不保留原始值。

有人知道我该怎么做吗?

非常感谢你!

编辑:

在页面顶部打印出 Input::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)

关键是如何在表单中显示它们。确切地说,如何根据该数组中包含的值选择一些图像。

编辑2:

感谢@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";
                 }
               }
              }
          ?>
4

1 回答 1

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}}"它不起作用,因为要选择它,你必须说选择它。还请务必评论此 hack 以供将来参考。

于 2013-11-11T16:05:33.340 回答