Laravel多个复选框数据提取

时间:2014-10-22 16:06:18

标签: php laravel laravel-4 eloquent blade

从多个复选框中获取所有值后,我遇到了一个严重的问题。我可以获取最后检查的值,但不能再提取。

这是我的控制器:

public function getFilterPaytv(){

    $valore =  Input::get('opt');
    if(!empty($valore))
    foreach ($valore as $val) {

        $results = Tpaytv::where('Desc', 'LIKE', '%' . $val . '%')->get();

        echo $val . ""; // 

        // echo $results
    }

    return View::make('result')->with('results', $results);
}

这是我的观点

@if($results->count())
    @foreach($results as $pa)

            <div class="col-lg-12 ">
               <div class="box">
                  <div class="row">
                      <div class="col-lg-2"><img src="img/T.png" class="timC"></div>
                  <div class="col-lg-4">
                     <ul class="boxCar">
                        <li>Pro: {{$pa->Type}}</li>
                        <li>Sca: {{ date("d/m/Y",strtotime($pa -> S))}}</li>
                        <li 
                             data-toggle="modal" 
                             data-target="#{{ $pa->id }}">
                             <a>Magg</a></li>
                     </ul>
                  </div>
                      <!--inizio modal -->

                  <!-- fine modal -->
                  <div class="col-lg-3"><h1 class="ads">{{$pa->T}}€</h1></div>
                  <div class="col-lg-3">

                   {{ 
                       link_to_route('confr.show',
                       'request ', 
                       array($paytv->id), 
                       array('class' => 'btn btn-green btn-md offButton'))
                   }}
                  </div>
               </div>
            </div>
         </div>
    @endforeach
@else
no
@endif

2 个答案:

答案 0 :(得分:1)

您的代码仍然存在许多需要解决的问题,但您只能获得复选框设置的最后结果,假设复选框值来自{{1} },因为当你遍历foreach中的值时,你会覆盖你的结果变量。

在您的代码中:

$valore = Input::get('opt');

变量foreach ($valore as $val) { $results = Tpaytv::where('Desc', 'LIKE', '%' . $val . '%')->get(); echo $val . ""; // // echo $results } 在循环的第一次迭代之前尚未声明,这意味着在您的第一个循环中$result设置为$result方法调用的结果,然后是第二个循环Tpaytv::where中的值被$result方法调用的下一个结果覆盖。这就是为什么你只检查最后一个值的原因;它是你的foreach中最后一个值。

如果你想得到一大堆结果,你需要在foreach循环之前将Tpaytv::where变量声明为空数组,然后将结果推送到数组中:

$result

答案 1 :(得分:0)

@foreach ($friends as $friend)
 <input tabindex="1" type="checkbox" name="check[]" id="{{$item}}" value="{{$itemval}}">
 @endforeach


$items_checked= Input::get('check');
 if(is_array($items_checked))
 {
    // do stuff with here with checked items
 }