Я новичок в 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.
Он по-прежнему не работает. Он генерирует этот URL: "mysitename.com/createorder?placed=true" и выполняет все остальное, кроме сохранения значения расстояния. В базе данных значение пусто, которое должно было быть передано через URL. @nakov
Вы пробовали распечатать request () -> all (), чтобы убедиться, что вы передаете контроллеру? Вы поместили свой ввод в форму или просто в другое место в представлении лезвия?
Проблема в том, что переменная расстояния создается вне любой формы в теле представления внутри тега PHP. Я думаю, что это проблема, поскольку это не часть метода публикации. Значение было передано через URL-адрес раньше из тела. Есть ли способ сделать это внутри контроллера из файла просмотра?






Строковая интерполяция используется в 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 из файла лезвия в контроллер?
используйте request('distance_km'); или попробуйте dd(request()->all()) в контроллере, чтобы проверить, какие значения вы отправляете в контроллер.
Теперь я вижу, что ваш параметр - distance, поэтому используйте request('distance');
Я только что попробовал, но это не сработало. Извините, я много чего не понимаю. Таким образом, котроллер по-прежнему не получает значения. Должен ли я пройти через маршрут к контроллеру или контроллер должен получить значение непосредственно из файла представления?
вы вообще попадаете в действие контроллера? вы можете в нем что-нибудь напечатать? Можете ли вы дать мне сгенерированный URL-адрес, щелкнув ссылку?
Вот в чем дело. Этот контроллер используется для отправки сгенерированного токена на сервер полосы. В конце контроллера я хочу вызвать файл "place-order.php", поскольку он сохраняет все элементы моей корзины в базе данных. Оно работает. Но мне также нужно добавить $ distance_km с URL-адресом, поскольку он сохраняет расстояние до базы данных. Если я удалю часть '& distance = $ distance_km', она сохранит все данные, кроме расстояния. Раньше URL-адрес вызывался через тег привязки в файле лезвия, и он работал отлично.
Ранее URL-адрес вызывался с помощью тега привязки в файле лезвия. Теперь я хочу вызвать функцию из контроллера и вызвать URL-адрес из контроллера. Однако маршрут не передает никаких параметров. Стоит ли там что-то менять? Все, что я понимаю, мой контроллер не знает значение переменной $ distance, поэтому он не может его передать.
Я не совсем понимаю ваш поток, но если вы генерируете токен полосы в том же действии в вашем контроллере, то перед этим в представлении вы можете использовать скрытое поле: <input name = "distance" value = "{{$distance_km}}" /> и использовать его значение, как я сказал выше из запроса объект.
Просто попробовал. Не работает. Он перезагружается и остается на той же странице. Не переходит на новый URL. Если я удалю '& distance = $ distance_km' из URL-адреса, он перейдет к новому URL-адресу и сохранит все, кроме значения расстояния. Не знаю, что еще попробовать. Тем не менее, спасибо за вашу любезную поддержку. Узнал много нового.
если вы можете поделиться большим количеством кода, вам будет легче помочь.
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Вы не сохраняете значение request('distance') в переменной $distance. Так что попробуйте заменить последнюю строчку на эту: return redirect('/place-order.php?placeorder=true&distance=' . request('distance'));
Он по-прежнему не работает. Он генерирует этот URL: "mysitename.com/createorder?placed=true" и делает все остальное, кроме сохранения значения расстояния. В базе данных значение пусто, которое должно было быть передано через URL. Я также создал тег <input>, который вы предложили в лезвии, и он дает правильное значение, но контроллер по какой-то причине не может получить значение. Это мой маршрут для контроллера: Route :: post ('/ customPay', 'PaymentController @ custom_pay');
Вы должны использовать структуру 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");
$distance = request('distance');отсутствует .. вы нигде не сохраняете значение