Laravel 4搜索 - 在视图中,显示以表格形式提交的值

时间:2014-11-16 23:25:16

标签: laravel laravel-4

以下是我构建的过滤器表单的开头部分。它工作正常,但我想做的是在我的视图中检索输入的值。因此,在此示例中,我想显示“您通过'用户输入的关键字'搜索”,并在关键字文本字段中显示此内容。添加选择列表时,这将是相同的原则。

如果用户希望更改过滤器设置,或者对结果进行分页,则始终会存储这些值。

我的问题是如何做到这一点。我很确定它可以在laravel中但只知道如何在PHP中执行此操作

表格

<div class="row">  
    {{ Form::open(array('url'=>'events/search',    'class'=>'form-search', 'role'=>'form')) }}
        <div class="col-lg-6">
                <div class="input-group">
                    {{ Form::text('search', '', array('class'=>'form-control', 'placeholder'=>'Search by keyword.'))}}
                    <span class="input-group-btn">
                    {{ Form::submit('Search', array('class'=>'btn btn-default'))}}
                    </span>
                </div>
            </div>
    {{ Form::close() }}
</div>

搜索控制器

public function postSearch() {

        $search = Input::get('search');

        $events = DB::table('events')
            ->where(function($query) use ($search)
            {
                $query->where('title', 'LIKE',  '%' . $search . '%')
                ->where('date','>=', DB::raw('CURDATE()'));
            })
        ->orderBy('date', 'DESC')
        ->get();

        $this->layout->content = View::make('events.results', 
            array(
                'events' => $events
                )
            );
    }

查看

@foreach($events as $event)
        <div class="col-md-9">You search for ''</div>
          {{-- filter form will again display here --}}
        <h2>{{ HTML::link("events/$event->id/", "$event->title") }}</h2>
@endforeach

1 个答案:

答案 0 :(得分:0)

控制器:

public function postSearch() {

    $search = Input::get('search');

    $events = DB::table('events')
        ->where(function($query) use ($search)
        {
            $query->where('title', 'LIKE',  '%' . $search . '%')
            ->where('date','>=', DB::raw('CURDATE()'));
        })
    ->orderBy('date', 'DESC')
    ->get();

    $this->layout->content = View::make('events.results', 
        array(
            'events' => $events,
            'search' => $search <-------- pass the search parameter to view
            )
        );
}

查看:

@if(!empty($search))
<div class="col-md-9">You search for {{$search}}</div>   
@endif

@foreach($events as $event)
    {{-- filter form will again display here --}}
    <h2>{{ HTML::link("events/$event->id/", "$event->title") }}</h2>
@endforeach

两个问题:

  • 一般来说,搜索表单为GET而非POST。 (更容易收藏,在其他地方提供链接)
  • 将搜索词放在循环之外。