Как показать в представлении результаты поиска после нажатия пользователем кнопки «Поиск»? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть UserController с index (), который возвращает к просмотру конференции, имеющие статус «D» (Черновик), прошедшие конференции и опубликованные конференции.

В представлении есть форма, позволяющая пользователю вводить имя для поиска созданных пользователем имен конференций.

Я сомневаюсь, как правильно отобразить в представлении результаты поиска после того, как пользователь нажал на кнопку «Поиск». Потому что так оно и есть: «Неопределенная переменная: искалиКонференции».

UsersController:

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 вкладки (Черновики конференций, Опубликованные конференции, Завершенные конференции), по умолчанию отображается активная вкладка Черновые конференции. Когда пользователь щелкает на другой вкладке, на вкладке отображается содержимое этой конкретной вкладки (прошедшие конференции, черновые конференции или финансовые конференции).

<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>

1 Ответ

0 голосов
/ 29 июня 2018

Похоже, что reidrect () -> with () помещает данные из метода with () в сеанс. Я бы полностью изменил часть перенаправления, чтобы он служил представлению с новыми элементами, или изменил бы вашу переменную на блейде так, чтобы она была в сеансе. Возможно что-то вроде:

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

См https://laracasts.com/discuss/channels/general-discussion/laravel-5-redirect-with-variables?page=1 здесь я нашел полезную информацию по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...