Как исправить "Осветить \ Поддержка \ Коллекция :: get (), 0passed в /AMPPS/www/lsapp/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php" - PullRequest
0 голосов
/ 19 июня 2019

В попытке запрограммировать панель поиска, я создал метод GET и добавил новый контроллер, где он получает соответствующие данные и возвращает их с представлением.

    //This is the form in the view named "index.blade.php"

    {!! Form::open(['action' => 'SearchesController@search', 'method' => 'GET']) !!}   
        <form class="form-inline md-form mr-auto mb-4">

            {{Form::text('search', '', ['class'=>'form-control', 'placeholder'=>'Search Anything'])}}

            <button class="btn aqua-gradient btn-rounded btn-sm my-0" type="submit">Search</button>

       </form>
    {!! Form::close() !!}

    //---------------------------------------------------------

    //This is in the "web.php"

    Route::get('/posts/search', 'SearchesController@search');

    //---------------------------------------------------------

    //The following code is the controller named "SearchesController.php"

    <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    use Illuminate\Support\Facades\Storage;
    use App\Post;
    use DB;

    use Illuminate\Support\Facades\Auth;

    class SearchesController extends Controller
    {
        public function search(Request $request)
        {
            $this->validate($request, [
                 'search' => 'required',
            ]);

            $search = metaphone($request->input('search'));


            $posts = Post::where('sounds_like','LIKE',"%{$search}%")
                ->orderBy('title', 'desc')
                ->paginate(10)
                ->get();

            return view('posts.index')->with('posts',$posts);
        }
    }

Я ожидал выводапредставление со всеми данными, возвращенными при просмотре, но вместо этого получило сообщение error :

"Слишком мало аргументов для функции Illuminate \ Support \ Collection :: get (), 0передано в /Applications/AMPPS/www/lsapp/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php в строке 23 и как минимум 1 ожидаемое "

1 Ответ

1 голос
/ 19 июня 2019

Вам не нужно get () , если вы используете paginate () .Paginate также выполнит запрос и создаст коллекцию, а метод get() будет выполнен как экземпляр этого get () и потребует параметр ключа.Таким образом, вы можете удалить его:

public function search(Request $request)
{
    // ...


    $posts = Post::where('sounds_like','LIKE','%'. $search . '%')
        ->orderBy('title', 'desc')
        ->paginate(10);

    return view('posts.index')->with('posts',$posts);
}

Не относится к ошибке, но у вас есть форма внутри формы .Выберите один и удалите другой:

{!! Form::open(['action' => 'SearchesController@search', 'method' => 'GET', 'class'=>'form-inline md-form mr-auto mb-4']) !!} 

        {{Form::text('search', '', ['class'=>'form-control', 'placeholder'=>'Search Anything'])}}

        <button class="btn aqua-gradient btn-rounded btn-sm my-0" type="submit">Search</button>

{!! Form::close() !!}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...