Отмена $ request-> merge () - PullRequest
       3

Отмена $ request-> merge ()

0 голосов
/ 22 апреля 2020

Итак, я создаю небольшой фрагмент кода, в котором я беру запрос и временно добавляю в него некоторые параметры через $request->merge()

. В какой-то более поздний момент в коде я хотел бы иметь возможность восстановить просьба к тому, что было изначально. Тем не менее, фрагмент кода, который восстанавливает его, не будет явно знать, в какие вещи были объединены. Однако он сможет получить доступ к переменной, которую я установил в начале функции, $rall = $request->all(); - если возможно восстановите исходное состояние запроса с помощью этой переменной, это было бы замечательно!

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

РЕШЕНИЕ 1:

Вы можете использовать метод createFrom stati c ( см. Документацию )

$requestCopy = Request::createFrom($request);

$requestCopy->merge([
   "foo" => "bar",
   // .....
]);

// $request remains intact

РЕШЕНИЕ 2:

Используйте функцию PHP native clone . Обратите внимание, что клон делает только поверхностную копию объекта запроса, но в любом случае я не думаю, что у вас будут вложенные объекты внутри вашего запроса ...

$requestCopy = clone $request;

$requestCopy->merge([
   "foo" => "bar",
   // .....
]);

// $request remains intact

РЕШЕНИЕ 3:

Согласно документации , вы можете использовать метод duplicate для достижения своей цели.

$requestDuplicate = $request->duplicate();

$requestDuplicate->merge([
   "foo" => "bar",
   // .....
]);

// $request will keep the same state
0 голосов
/ 22 апреля 2020

Я очень надеялся на ответ Езана на работу, я был уверен, что это так! Но это не так.

Но я посмотрел на документы, которые он связал, и нашел метод ->replace, который я действительно могу использовать, чтобы делать то, что я хочу.

По сути, я храню оригинальный метод $originalRequestData = $request->all() в начале процесса, и я могу ->merge() данные в запросе, как мне нужно, и когда я готов вернуть запрос в исходное состояние, я делаю $request->replace($originalRequestData);, и он работает отлично, как и ожидалось!

0 голосов
/ 22 апреля 2020

Вы можете сохранить данные начального запроса в одной переменной, а затем добавить дополнительные данные, как показано ниже:

$reqDatatOld = $request->all();

Затем выполните $request->merge() и используйте его в любом месте кода. когда вам требуются старые данные, используйте переменную, которую мы создали $reqDatatOld

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...