URL-адрес перенаправления со значением из контроллера Laravel

Я новичок в Laravel, и у меня возникла проблема в течение нескольких дней. Я сделал это со своим PHP-кодом ...

<a class = "btn_full" href = "/place-order.php?placeorder=true&distance=<?php echo $distance_km; ?>">Place Order</a>

Я хочу использовать HREF в контроллере Laravel, чтобы делать то же самое ...

Обновление 2

<?php

public function custom_pay(Request $request)
{
    try {
        Stripe::setApiKey(Setting::get('stripe_secret_key'));
        $token = $_POST['stripeToken'];

        $customer = \Stripe\Customer::create([
            'source' => $token,
            'email' => Auth::user()->email,
        ]);
        request('distance');

        return redirect('/place-order.php?placeorder=true&distance=' . $distance);
    } catch (\Exception $e) {
        return $e->getMessage();
    }
}

Однако он не отправляет значение $distance_km с URL-адресом. Как я могу это сделать? Заранее спасибо.

Обновление 3

Я добавил эту часть, как было предложено ...

$distance= request('distance');

return redirect('/place-order.php?placeorder=true&distance=' . $distance);

Внутри файла лезвия я добавил следующее:

<input name = "distance" value = "{{ $distance_km }}" type = "hidden" />

Это все еще не работает. Он генерирует этот URL: "mysitename.com/createorder?placed=true" и делает все остальное, кроме сохранения значения расстояния. В базе данных значение пусто, которое должно было быть передано через URL.

$distance = request('distance'); отсутствует .. вы нигде не сохраняете значение
nakov 02.11.2018 10:57

Он по-прежнему не работает. Он генерирует этот URL: "mysitename.com/createorder?placed=true" и выполняет все остальное, кроме сохранения значения расстояния. В базе данных значение пусто, которое должно было быть передано через URL. @nakov

Mehedi Anik 02.11.2018 11:06

Вы пробовали распечатать request () -> all (), чтобы убедиться, что вы передаете контроллеру? Вы поместили свой ввод в форму или просто в другое место в представлении лезвия?

nakov 02.11.2018 13:05

Проблема в том, что переменная расстояния создается вне любой формы в теле представления внутри тега PHP. Я думаю, что это проблема, поскольку это не часть метода публикации. Значение было передано через URL-адрес раньше из тела. Есть ли способ сделать это внутри контроллера из файла просмотра?

Mehedi Anik 04.11.2018 05:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
1 502
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Строковая интерполяция используется в PHP с двойными кавычками, как это

return redirect("/place-order.php?placeorder=true&distance=$distance_km");

или вы можете объединить свое значение следующим образом:

return redirect('/place-order.php?placeorder=true&distance=' . $distance_km);

Я пытался это сделать, но это не сработало. Я думаю, что отчасти проблема заключается в том, что контроллер не знает значение $ distance_km, которое поступает из файла .blade.php. Как передать значение $ distance_km из файла лезвия в контроллер?

Mehedi Anik 02.11.2018 08:45

используйте request('distance_km'); или попробуйте dd(request()->all()) в контроллере, чтобы проверить, какие значения вы отправляете в контроллер.

nakov 02.11.2018 09:18

Теперь я вижу, что ваш параметр - distance, поэтому используйте request('distance');

nakov 02.11.2018 09:21

Я только что попробовал, но это не сработало. Извините, я много чего не понимаю. Таким образом, котроллер по-прежнему не получает значения. Должен ли я пройти через маршрут к контроллеру или контроллер должен получить значение непосредственно из файла представления?

Mehedi Anik 02.11.2018 09:28

вы вообще попадаете в действие контроллера? вы можете в нем что-нибудь напечатать? Можете ли вы дать мне сгенерированный URL-адрес, щелкнув ссылку?

nakov 02.11.2018 09:45

Вот в чем дело. Этот контроллер используется для отправки сгенерированного токена на сервер полосы. В конце контроллера я хочу вызвать файл "place-order.php", поскольку он сохраняет все элементы моей корзины в базе данных. Оно работает. Но мне также нужно добавить $ distance_km с URL-адресом, поскольку он сохраняет расстояние до базы данных. Если я удалю часть '& distance = $ distance_km', она сохранит все данные, кроме расстояния. Раньше URL-адрес вызывался через тег привязки в файле лезвия, и он работал отлично.

Mehedi Anik 02.11.2018 09:55

Ранее URL-адрес вызывался с помощью тега привязки в файле лезвия. Теперь я хочу вызвать функцию из контроллера и вызвать URL-адрес из контроллера. Однако маршрут не передает никаких параметров. Стоит ли там что-то менять? Все, что я понимаю, мой контроллер не знает значение переменной $ distance, поэтому он не может его передать.

Mehedi Anik 02.11.2018 09:58

Я не совсем понимаю ваш поток, но если вы генерируете токен полосы в том же действии в вашем контроллере, то перед этим в представлении вы можете использовать скрытое поле: <input name = "distance" value = "{{$distance_km}}" /> и использовать его значение, как я сказал выше из запроса объект.

nakov 02.11.2018 10:00

Просто попробовал. Не работает. Он перезагружается и остается на той же странице. Не переходит на новый URL. Если я удалю '& distance = $ distance_km' из URL-адреса, он перейдет к новому URL-адресу и сохранит все, кроме значения расстояния. Не знаю, что еще попробовать. Тем не менее, спасибо за вашу любезную поддержку. Узнал много нового.

Mehedi Anik 02.11.2018 10:15

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

nakov 02.11.2018 10:31
codepublic функция custom_pay (Request $ request) {try {Stripe :: setApiKey (Setting :: get ('stripe_secret_key')); $ токен = $ _POST ['stripeToken']; $ customer = \ Stripe \ Customer :: create (['source' => $ token, 'email' => Auth :: user () -> email,]); запрос ('расстояние'); возврат перенаправления ('/ place-order.php? placeorder = true & distance ='. $ distance); }} code
Mehedi Anik 02.11.2018 10:37

Вы не сохраняете значение request('distance') в переменной $distance. Так что попробуйте заменить последнюю строчку на эту: return redirect('/place-order.php?placeorder=true&distance=' . request('distance'));

nakov 02.11.2018 10:39

Он по-прежнему не работает. Он генерирует этот URL: "mysitename.com/createorder?placed=true" и делает все остальное, кроме сохранения значения расстояния. В базе данных значение пусто, которое должно было быть передано через URL. Я также создал тег <input>, который вы предложили в лезвии, и он дает правильное значение, но контроллер по какой-то причине не может получить значение. Это мой маршрут для контроллера: Route :: post ('/ customPay', 'PaymentController @ custom_pay');

Mehedi Anik 02.11.2018 10:56

Вы должны использовать структуру Laravel, вы не можете использовать ядро ​​php.

return redirect->route('your routename');

смотрите документы: https://laravel.com/docs/5.7/routing

а здесь https://laravel.com/docs/5.7/helpers#urls

сделать это как: return redirect("/place-order.php?placeorder=true&distance=$distance_km");

Другие вопросы по теме