Доступ к значениям строки запроса из Laravel

Кто-нибудь знает, можно ли использовать URL-запросы в Laravel.

Пример

У меня есть следующий маршрут:

Route::get('/text', 'TextController@index');

И текст на этой странице основан на следующем URL-запросе:

http://example.com/text?color={COLOR}

Как бы я подошел к этому в Laravel?


person Melvin Koopmans    schedule 14.07.2014    source источник


Ответы (3)


Да, это возможно. Попробуй это:

Route::get('test', function(){
    return "<h1>" . Input::get("color") . "</h1>";
});

и вызовите его, перейдя к http://example.com/test?color=red.

Вы можете, конечно, расширить его дополнительными аргументами, сколько душе угодно. Попробуй это:

Route::get('test', function(){
    return "<pre>" . print_r(Input::all(), true) . "</pre>";
});

и добавьте еще несколько аргументов:

http://example.com/?color=red&time=now&greeting=bonjour`

Это даст вам

Array
(
    [color] => red
    [time] => now
    [greeting] => bonjour
)
person Kryten    schedule 14.07.2014
comment
зачем в этом примере использовать объект Input вместо объекта Request? - person Matt Catellier; 17.09.2016
comment
@MattCatellier Я полагаю, что объект запроса предназначен для версии Laravel ›= 5.0 - person stuartb; 30.03.2019
comment
Не забыл добавить use Illuminate\Http\Request; рядом с импортом - person Blasanka; 10.10.2020

Для будущих посетителей я использую описанный ниже подход для > 5.0. Он использует класс Laravel Request и может помочь убрать бизнес-логику из ваших routes и controller.

Пример URL

admin.website.com/get-grid-value?object=Foo&value=Bar

Routes.php

Route::get('get-grid-value', 'YourController@getGridValue');

ВашКонтроллер.php

/**
 * $request is an array of data
 */
public function getGridValue(Request $request)
{
    // returns "Foo"
    $object = $request->query('object');

    // returns "Bar"
    $value = $request->query('value');

    // returns array of entire input query...can now use $query['value'], etc. to access data
    $query = $request->all();

    // Or to keep business logic out of controller, I use like:
    $n = new MyClass($request->all());
    $n->doSomething();
    $n->etc();
}

Подробнее о получении входных данных из объекта запроса прочитайте документацию.

person camelCase    schedule 06.01.2016
comment
Это $request-›query('object'); для параметров строки запроса. - person malhal; 01.10.2016

Параметры запроса используются следующим образом:

use Illuminate\Http\Request;

class ColorController extends BaseController{

    public function index(Request $request){
         $color = $request->query('color');
    }
person malhal    schedule 01.10.2016