【问题标题】:How to show in the view the search results after the user click in the "Search" button?用户点击“搜索”按钮后,如何在视图中显示搜索结果?
【发布时间】:2018-12-08 21:11:48
【问题描述】:

我有一个带有 index() 的 UserController,它返回视图状态为“D”(草稿)的会议、过去的会议和已发布的会议。

视图中有一个表单,用户可以输入名称来搜索用户创建的会议名称。

我的疑问是用户单击“搜索”按钮后如何在视图中正确显示搜索结果。因为它显示为“未定义的变量:searchedConferences”。

用户控制器:

class UserController extends Controller
{
    public function index(Request $request){

        $pageLimit = 5;
        $user = $request->user();

        $draftConferences = $user->conferences()->where('status','D')->paginate($pageLimit);
        $pastConferences = $user->conferences()->where('end_date','<', now())->paginate($pageLimit);
        $publishedConferences = $user->conferences()->where('status','P')->paginate($pageLimit);

        return view('users.index',
            compact('user', 'draftConferences', 'pastConferences', 'publishedConferences'));
    }
    public function searchConference(Request $request)
    {
        $user = Auth::user();
        $search = $request->search_conference;
        $conferences = Conference::where('name', 'LIKE', '%'.$search.'%')->where('creator_id',$user->id)->get();

        //dd($conferences);
       return redirect(route('user.index', ['user' => Auth::id()]) . '#myConferences')->with('searchedConferences', $conferences);
    }
}

然后在视图中我有一个表单供用户搜索会议。在表格下方,它显示从 index() 返回的数据。有 3 个选项卡(会议草案、已发布会议、已完成会议),默认情况下,会议草案选项卡处于活动状态。当用户在另一个选项卡中单击时,它会显示在选项卡内容中该特定选项卡的结果(过去的会议、草稿会议或 finsih 会议)。

<form method="post" method="POST" action="{{ route('user.searchConference') }}">
    {{ csrf_field() }}
    <div class="form-group">

      <input type='text' class="form-control" placeholder="Search conferences" name="search_conference"/>
      <button>Search</button>

    </div>
</form>

@if(!empty($searchedConferences))
            {{$searchedConferences}}
        @else
            <ul class="nav nav-pills">
                <li class="nav-item">
                    <a class="nav-link active border" href="#draftConferences" data-toggle="tab" role="tab">Draft Conferences</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link border" href="#publishedConferences" data-toggle="tab" role="tab">Published Conferences</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link border" href="#finishedConferences" data-toggle="tab" role="tab">Conferences Archived</a>
                </li>
            </ul>
            <div class="tab-content" id="myTabContent">
                <div class="tab-pane fade active show clearfix" id="draftConferences" role="tabpanel" aria-labelledby="home-tab">
                    <ul class="list-group">
                    @foreach($draftConferences as $draftConference)
                        @if(!empty($draftConference))
                            <li class="list-group-item">
                                 <h5>{{$draftConference->name}}</h5>
                            </li>
                        @endif
                    @endforeach
                   <div>
                        {{$draftConferences->fragment('draftConferences')->links("pagination::bootstrap-4")}}
                    </div>
                </div>
                <!-- same structure for the "#publishedConferences" and "#finishedConferences" -->
            </div>

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    似乎 reidrect()->with() 将来自 with() 方法的数据放入会话中。我将完全更改重定向部分以使用新项目为视图提供服务,或者将刀片上的变量更改为会话中的变量。大概是这样的:

    {{ \Session::get('searchedConferences') }}

    https://laracasts.com/discuss/channels/general-discussion/laravel-5-redirect-with-variables?page=1 我在那里找到了一些关于这个问题的有用信息。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2021-09-24
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 2020-12-26
      相关资源
      最近更新 更多