Недопустимый аргумент для foreach () в представлении. Laravel - PullRequest
1 голос
/ 10 июля 2020

Я хочу выполнить поиск по пользователям таблиц, но вижу ошибку на http://127.0.0.1:8000/:

Недопустимый аргумент для foreach () (Просмотр: / opt / lampp / htdocs / abonamenty / resources / views / users / index.blade. php)

И при ошибке 404 localhost после нажатия кнопки поиска.

«Объект не найден! Запрошенный URL не был найден на этом сервере. Ссылка на соответствующей странице неверна или устарела. Сообщите автору этой страницы о проблеме. Если вы считаете, что это ошибка сервера, обратитесь к администратору. "

Это часть моего контроллера

public function index(Request $request)
{
    $data = User::sortable()->paginate(5);
    return view('users.index', compact('data'))->with('i', ($request->input('page', 1) - 1) * 5);
}

public function search(Request $request)
{
    $search = $request->get('search');
    $data = DB::table('users')->where('surname', "%$search%")->paginate(5);
    return view('users.index', ['users' => $data]);
}

Мои маршруты:

Route::get('/home', 'HomeController@index')->name('home');

Route::group(['middleware' => ['auth']], function () {
    Route::resource('roles', 'RoleController');
    Route::resource('users', 'UserController');
    Route::resource('permissions', 'PermissionController');
    Route::resource('products', 'ProductController');
    Route::get('/search', 'UserController@search');
    Route::get('data', 'UserController@index');
    Route::get('posts', 'PostController@index');
});

Мое представление:

@extends('layouts.app')

@section('content')
    <div class="row">
        <div class="col-lg-12 margin-tb">
            <div class="pull-left">
                <h2>Zarządzanie kontami użytkowników</h2>
            </div>
            <div class="col-md-4">
                <form action="/search" method="get">
                    <div class="input-group">
                        <input type="search" name="search" class="form-control">
                        <span class="input-group-prepend">
                            <button type="submit" class="btn btn-primary">Wyszukaj</button>
                        </span>
                    </div>
                </form>
            </div>
            <div class="pull-right">
                <a class="btn btn-success" href="{{ route('users.create') }}"> Utwórz nowego użytkownika</a>
            </div>
        </div>
    </div>
    <br>

    @if ($message = Session::get('success'))
        <div class="alert alert-success">
            <p>{{ $message }}</p>
        </div>
    @endif


    <table class="table table-bordered">
        <tr>
            <th scope="col">@sortablelink('id', 'Numer')</th>
            <th scope="col">@sortablelink('name', 'Imię')</th>
            <th scope="col">@sortablelink('surname', 'Nazwisko')</th>
            <th scope="col">@sortablelink('showname', 'Nazwa wyświetlania')</th>
            <th scope="col">@sortablelink('email', 'Email')</th>
            <th>Rola</a></th>
            <th width="280px">Akcja</a></th>
        </tr>
        @foreach ($data ?? '' as $key => $user)
            <tr>
                <td>{{ ++$i ?? '' ?? '' }}</td>
                <td>{{ $user->name }}</td>
                <td>{{ $user->surname }}</td>
                <td>{{ $user->showname }}</td>
                <td>{{ $user->email }}</td>
                <td>
                    @if(!empty($user->getRoleNames()))
                        @foreach($user->getRoleNames() as $v)
                            <label class="badge badge-success">{{ $v }}</label>
                        @endforeach
                    @endif
                </td>
                <td>
                    <a class="btn btn-info" href="{{ route('users.show',$user->id) }}">Wiecej informacji</a>
                    <a class="btn btn-primary" href="{{ route('users.edit',$user->id) }}">Edytuj użytkownika</a>
                    {!! Form::open(['method' => 'DELETE','route' => ['users.destroy', $user->id],'style'=>'display:inline']) !!}
                    {!! Form::submit('Usuń', ['class' => 'btn btn-danger']) !!}
                    {!! Form::close() !!}
                </td>
            </tr>
        @endforeach
    </table>
    {!! $data ?? ''->appends(request()->except('page'))->render() !!}

    <!--{!! $data ?? ''->render() !!}-->

    <p class="text-center text-primary"><small>ARTplus 2020</small></p>
@endsection

1 Ответ

1 голос
/ 10 июля 2020

Думаю нужно изменить способ поиска

use Illuminate\Support\Facades\Input;

public function search()
{
    $search =Input::get('search');
    $data = DB::table('users')->where('surname', "%$search%")->paginate(5);
    // Also we can check using print_r($data); die(); 
    return view('users.index', ['users' => $data]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...