Пример использования:
objs.sort(sortBy('last_nom'));
Сценарий:
/**
* @description
* Returns a function which will sort an
* array of objects by the given key.
*
* @param {String} key
* @param {Boolean} reverse
* @return {Function}
*/
function sortBy(key, reverse) {
// Move smaller items towards the front
// or back of the array depending on if
// we want to sort the array in reverse
// order or not.
var moveSmaller = reverse ? 1 : -1;
// Move larger items towards the front
// or back of the array depending on if
// we want to sort the array in reverse
// order or not.
var moveLarger = reverse ? -1 : 1;
/**
* @param {*} a
* @param {*} b
* @return {Number}
*/
return function(a, b) {
if (a[key] < b[key]) {
return moveSmaller;
}
if (a[key] > b[key]) {
return moveLarger;
}
return 0;
};
}
Я сделал это, и это прекрасно работает.
1. composer.json:
От:
"require": {
"php": ">=7.0.0",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0"
},
До:
"require": {
"php": ">=7.1.3",
"fideloper/proxy": "~4.0",
"laravel/framework": "5.6.*",
"laravel/tinker": "~1.0"
},
2. Замените файл app \ Http \ Middleware \ TrustedProxies.php содержимым ниже:
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var string
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
3. обновление композитора
Объект запроса Laravel расширяет объект запроса Symfony. Laravel 5.5 зависит от Symfony 3, который имеет эту константу. Laravel 5.6 зависит от Symfony 4, который не имеет этой константы.
Исходя из конфигурации доверенных прокси, похоже, что вы используете пакет доверенных прокси «за пределами» Laravel. Laravel привнес пакет доверенных прокси в платформу в 5.5 и создал специальное \App\Http\Middleware\TrustProxies
промежуточное программное обеспечение для использования.
Я бы предложил перейти на использование промежуточного программного обеспечения и настроить его, как описано в документации Laravel . Это поможет предотвратить подобные проблемы совместимости в будущем.
Чтобы выполнить переключение:
В app/Http/Kernel.php
, если \Fideloper\Proxy\TrustProxies::class
находится в вашем массиве $middleware
, удалите его. Если \App\Http\Middleware\TrustProxies::class
нет в вашем массиве $middleware
, добавьте его.
Откройте файл app/Http/Middleware/TrustProxies.php
и обновите его прокси-серверами.
Удалите файл config/trustedproxy.php
.
Удалите Fideloper\Proxy\TrustedProxyServiceProvider::class
из массива providers
в config/app.php
.
Обновите файл composer.json, чтобы использовать «fideloper / proxy»: «~ 4.0». Запустите composer update fideloper/proxy
, чтобы обновить пакет.
Я обновил с 5.5 до 5.6
composer.json
"minimum-stability":"dev",
"prefer-stable": true,
Это установит последние пакеты Laravel, затем возникнет проблема с TrustedProxies
.
Установите последнюю версию прокси для Laravel 5.6.
Пожалуйста, используйте тег 4.0+ для Laravel 5.6:
composer require fideloper/proxy:~4.0
Первая установка Laravel 5.6 Я также столкнулся с этой ошибкой. Просто выполните следующие шаги, чтобы исправить это:
composer.json
имеет: "require": { "php": "^7.1.3", "fideloper/proxy": "^4.0", },
composer update
убедитесь, что ваш композитор обновлен composer require fideloper/proxy:~4.0
Всем, кто пытался выполнить обновление непосредственно с laravel 5.5 до 5.7 и тоже сталкивался с этой проблемой, удалите файлrustproxy.php из app->config->trustedproxy.php
. Надежды, которые кому-то помогают.
Ваша проблема связана с использованием вами библиотеки TrustedProxy .
Он использует константу HEADER_CLIENT_IP
Symfony, которая была устарела в Symfony 3.3 и полностью удалена в Symfony 4.0.
Поскольку Laravel 5.6 обновлен для использования компонентов Symfony 4, это больше не будет работать.
Чтобы решить эту проблему, нужно сделать то, что предложил Патрикус , и использовать промежуточное ПО Laravel TrustProxies.
Я сделал следующие вещи и запустил свой проект на Laravel 5.6-dev:
"minimum-stability":
"dev", "prefer-stable": true
в конец моего файла composer.json. Заменить app \ Http \ Middleware \ TrustedProxies.php на:
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
protected $proxies;
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
Заменить config \rustproxy.php на:
<?php
return [
'proxies' => null,
'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL,
];
Ни одно из предложений здесь не помогло мне по какой-то причине. Я использую панель quickadmin и различные зависимости, которые могут иметь к этому какое-то отношение.
Что в итоге сработало, так это удаление laravel / dusk, а затем обновление до "fideloper/proxy": "~4.0",
самостоятельно. Затем обновите laravel / framework до 5.6, затем переустановите dusk.
Мне не нужно:
"minimum-stability":"dev",
"prefer-stable": true,
Может быть, это было исправлено с последними обновлениями.
Столкнулся с той же проблемой и получил ряд рекомендаций для решения этой проблемы. К сожалению, никто из них не работал, ни я. На самом деле нет никаких дополнительных шагов или задач, необходимых для решения этой проблемы.
Просто следуйте официальному руководству по обновлению из https://laravel.com/docs/5.6/upgrade и вместе с этим удалите файл конфигурации trustedproxy
, расположенный в config/trustedproxy.php
Та же проблема была в Laravel 5.7. Вы можете добавить TELESCOPE_ENABLED=false
в .env
или .env.dusk.local
: Источник