Request :: query (‘sort_by’) всегда возвращает нулевое представление в Laravel 5.3

У меня очень странная проблема с получением параметров запроса, используя Request класс «в моей машине разработчика»

⁠⁠⁠⁠Request::query('sort_by')⁠⁠⁠⁠ возвращает реальный
value⁠⁠⁠⁠

⁠⁠(DevEnv: ⁠⁠⁠MacOS PHP 7.0⁠⁠⁠ Laravel Valet 2)⁠⁠
но ⁠⁠⁠

в производстве⁠⁠⁠ всегда возвращается ⁠⁠⁠⁠null⁠⁠⁠⁠

⁠⁠(ProdEnv: ⁠⁠⁠Ubuntu 16.04 PHP 7.0⁠⁠⁠ NGINX)⁠⁠

У меня есть эта строка в URL в браузере уже

У меня есть этот запрос строки в URL в браузере уже

0

Решение

Я не уверен насчет вашего кода, я бы предложил, если вы можете использовать

$collection=collect(⁠⁠⁠⁠Request::all());
$data=$collection->sortByDesc('yourfieldname');
OR
$data=$collection->sortBy('yourfieldname');
3

Другие решения

Вы делаете вещи неправильно. В вашем контроллере сделайте это.

public function yourController()
{
list($sortBy, $order) = explode('-', request()->get('sort_by'));
$sortedModel = YourModel::get()->orderBy($sortBy, $order);

// $sortedModel contain the collection with desired sorting order
}

С вашей текущей реализацией это будет основной подход.

Но я хотел бы предложить использовать маршрут как

/new_arrivals?sortby=price&order=desc

так что в вашем контроллере вам не нужно implode, Вы можете просто назначить параметры, как

$sortBy = request()->get('sortby');
$order = request()->get('order');

Тогда вы можете продолжить как то же самое. Это намного чище.
Больше информации о порядок и смещение группировки заказа

1

Я узнал, что NGINX блок конфигурации / сервера был виновником, который нуждается в некоторых исправлениях,

Поэтому я изменил это на это, и я получаю параметры запроса

location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector