【问题标题】:Search not working in laravel 5.1搜索在 laravel 5.1 中不起作用
【发布时间】:2016-08-21 06:38:03
【问题描述】:

我目前正在做一个项目。在这个项目中,我的搜索表单无法正常工作。我的搜索按钮没有显示任何值。它只是返回一个空页面。请帮我。我的路线是

Route::get('/search', array('as' =>'search' ,'uses' => 'UserController@search'));

我的刀片模板是

<header id="header">
    <div class="top-bar">
        <div class="container">
            <div class="row">
                <div class="col-sm-12 col-xs-12">
                   <div class="social">
                        <ul class="social-share">
                            <li><a href="#"><i class="fa fa-google-plus"></i></a></li>
                            <li><a href="#"><i class="fa fa-facebook"></i></a></li>
                            <li><a href="#"><i class="fa fa-twitter"></i></a></li>
                            <li><a href="#"><i class="fa fa-skype"></i></a></li>
                        </ul>
                        <div class="search">
                            {!! Form::open(['route' => 'search', 'method'=> 'GET']) !!}

                                <input type="text" class="search-form" name="search" autocomplete="off" placeholder="Search">

                                    <i class="fa fa-search"></i>

                            {!! Form::close() !!}
                            </div>
                       </div>
                   </div>
                </div>
            </div>
        </div><!--/.container-->
    </div><!--/.top-bar-->

    <nav class="navbar navbar-inverse" role="banner">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="{!! URL::route('home') !!}">{!! Html::image('images/logo.png','logo') !!}</a>
            </div>

            <div class="collapse navbar-collapse navbar-right">
                <ul class="nav navbar-nav">
                    <li <?php if($active == 'home') {echo 'class="active"';} ?>><a href="{!! URL::route('home') !!}">Home</a></li>

                    <li <?php if($active == 'about_us') {echo 'class="active"';} ?>><a href="{!! URL::route('about_us') !!}">About Us</a></li>

                    <li <?php if($active == 'hospital') {echo 'class="active"';} ?> class="dropdown" >
                        <a  href="#" class="dropdown-toggle" data-toggle="dropdown">Hospitals <i class="fa fa-angle-down"></i></a>
                        <ul class="dropdown-menu">
                            @foreach($divisions as $division)

                                <li><a href="{!! URL::route('district', $division['id']) !!}">{{ $division['name'] }}</a></li>

                            @endforeach 

                        </ul>
                    </li>

                    <li <?php if($active == 'doctor') {echo 'class="active"';} ?> class="dropdown" >
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Doctors <i class="fa fa-angle-down"></i></a>
                        <ul class="dropdown-menu">

                        @foreach($divisions as $division)
                                <li><a href="{!! URL::route('districts',$division['id']) !!}">{{ $division->name }}</a></li>

                            @endforeach 

                        </ul>
                    </li>

                    <li <?php if($active == 'contact') {echo 'class="active"';} ?>><a href="{!! URL::route('contact') !!}">Contact Us</a></li>

                    <li <?php if($active == 'login') {echo 'class="active"';} ?>><a href="{!! URL::route('login') !!}">Login</a></li> 

                    <li <?php if($active == 'register') {echo 'class="active"';} ?>><a href="{!! URL::route('register') !!}">Sign Up</a></li>                           
                </ul>
            </div>
        </div><!--/.container-->
    </nav><!--/nav-->

</header><!--/header-->

我的控制器是

public function search(Request $req)
    {

        $divisions = Division::all();
        $doctors = Doctor::orderBy('name');
        $name = $req->input('name');
        if(!empty($name)) {
             $doctors->where('name', 'LIKE', '%' . $name . '%');
        }
        $doctors=$doctors->paginate(1);
       return view('users.index')
                   ->with('divisions',$divisions)
                   ->with('doctors',$doctors);

    }

【问题讨论】:

    标签: php mysql laravel search laravel-5.1


    【解决方案1】:

    您正在寻找$req-&gt;input('name'),但您在表单中将其称为searchname="search".

    要么将您的输入更改为:

    <input type="text" class="search-form" name="name" autocomplete="off" placeholder="Search">
    

    或者您的控制器请求:

    $name = $req->input('search');
    

    您的表单似乎也缺少提交按钮?

    <input type="submit" value="Search">
    

    【讨论】:

    • @Jahid26 你试过我的建议了吗?
    【解决方案2】:

    首先在路由中你可以这样写使用post方法来传递搜索关键字

        Route::post('/search', 'UserController@search_bar')->name('search');
    

    然后在你的刀片模板中做一些修改刀片模板

        {!! Form::open(['route' => 'search']) !!}
    
       <input type="text" class="search-form" name="search" autocomplete="off" placeholder="Search">
    
       <i class="fa fa-search"></i>  {!! Form::submit($btnTxt,array('class'=>'btn btn-success')) !!} {!! Form::close() !!}
    

    现在在你的控制器中试试我的,因为你没有提到你正在搜索哪个模型,所以我只会向你展示一种方法,你可以抓住它并自己尝试,

        public function search(Request $request)
        {
        $name = $request->input('search');
        if(null !== $name)
        {
             $doctors = App\Doctor::where('name', 'LIKE', '%' . $name .'%')->paginate(10);
      return view('users.index',compact('doctors'));
        }else{
          return redirect()->back();
         }
    

    }

    确保你指向正确的视野路径,干杯伙伴它肯定会为你工作:)

    【讨论】:

    • 抱歉,您的代码不起作用。它什么也没显示@Roshan Ranabhat
    【解决方案3】:

    问题的解决方案是

    public function search(Request $req)
        {
    
       $divisions = Division::all();
       $name = $req->input('search');
    
       $doctors = User::where('name', 'LIKE', '%' . $name . '%')->get();
    
       return view('users.search')
                   ->with('divisions',$divisions)
                    ->with('doctors',$doctors);
    
         }
    

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2016-01-28
      • 2016-10-20
      • 2017-02-27
      相关资源
      最近更新 更多