Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.09.2017 15:25:27

get запрос с параметрами

Версия Laravel:5.4
Версия PHP: 5.6.11
Операционная система и её версия: Windows 10 x64
Вендор и версия Веб-сервера: Apache 2.4

методом get посылается запрос с параметром all. Если all=true, забираются все данные из бд, если false, происходит выборка. Т.е в зависимости от параметра метода get возвращается либо один json, либо другой.
   
Получаю ошибку MethodNotAllowedHttpException
   

Код:

Route::get('banners/{all}', 'BannerController@index');

app\Http\Controllers\BannerController.php

class BannerController extends Controller
{
    public function index($all)
    {
       if(strcasecmp($all,"false"))
            $banners = Banner::all();
        else
            $banners = Banner::where('relevance','=',true)->get();
        if(!$banners->isEmpty())
            return response()->json($banners, 200);
        else return response()->json("data not found",204);
    }
....
}

app\Models\Banner.php

class Banner extends Model
{
    protected $primaryKey = 'uuid';
    protected $fillable = ['url', 'image_url','path','relevance'];
}

Изменено AmeRain (08.09.2017 15:25:52)

Не в сети

#2 08.09.2017 17:24:02

Re: get запрос с параметрами

как выглядит url, по которому пытаетесь перейти?

Не в сети

#3 09.09.2017 09:52:59

Re: get запрос с параметрами

Я вот так бы написал:

public function index()
{
    $banners = Banner::where(request('all') ? [] : ['relevance' => true])->get();

    return response()->json($banners, $banners->isEmpty() ? 204 : 200);
}

Передавать сообщение здесь не обязательно, есть код. А если передавать, то не хардкодить.

Маршрут должен выглядеть так:

Route::get('banners', 'BannerController@index');

Тогда при запросе /banners?all=true будут выдаваться все баннеры, а при запросе /banners будут выдаваться только релевантные. Если нужно именно /banner?all=false, тогда request('all') нужно заменить на request('all') === 'true', но это криво как-то.

Не в сети

#4 09.09.2017 17:20:55

Re: get запрос с параметрами

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

Не в сети

Подвал раздела