我对在Laravel刀片和razorpay集成中实现Ajax非常陌生。我已通过post方法将产品详细信息从我的控制器功能账单
发送到付款页面。成功付款后,我想将产品详细信息发送到functiondopayment
,并将订单详细信息保存到后端。当我尝试发送详细信息时,要么我得到$products的错误,要么我得到htmlspecialchars()期望参数1是字符串,要么我直接在ajax数据中放入$product
时给出的数组,要么当我使用json\u encode($product)编码$product时,在Laravel中为foreach提供的json响应参数无效
并将其发送到ajax数据。
控制器功能清单如下所示:
public function bill(Request $request){
$input = $request->all();
return view('cart/checkout')->with('product' , $request->product)
->with('subtotal' , round($request->subtotal));
}
掺杂函数是
public function dopayment(Request $request) {
//Input items of form
$input = $request->all();
$product = $request->product;
//if i use foreach here i get the error invalid argument suppy for foreach
print_r($product);
exit;
}
查看页面是
@extends('app.app')
@section('content')
<div id="main-content">
<div class="container clear">
<div class="panel-body" style="border: 1px solid #ddd;">
<form id="rzp-footer-form" action="{!!route('dopayment')!!}" method="POST" style="width: 100%; text-align: center" >
@csrf
<a href="#">
<img src="{{asset('/img/amcor.JPG')}}" />
</a>
<br/>
<p><br/>Price: {{ $subtotal }} INR </p>
<input type="hidden" name="amount" id="amount" value="{{ $subtotal }}"/>
<div class="pay">
<button class="razorpay-payment-button btn filled small" id="paybtn" type="button">Pay with Razorpay</button>
</div>
</form>
<br/><br/>
<div id="paymentDetail" style="display: none">
<center>
@foreach($product as $input => $details)
<input type="text" id="name" name="name" value="{{ json_decode($details)->name}}">
@endforeach
<div>paymentID: <span id="paymentID" name="txn_id"></span></div>
<div>paymentDate: <span id="paymentDate" name="date"></span></div>
</center>
</div>
</div>
</div>
</div>
<script>
$('#rzp-footer-form').submit(function (e) {
var button = $(this).find('button');
var parent = $(this);
button.attr('disabled', 'true').html('Please Wait...');
$.ajax({
method: 'get',
url: this.action,
data: $(this).serialize(),
complete: function (r) {
console.log('complete');
console.log(r);
}
})
return false;
})
</script>
<script>
function padStart(str) {
return ('0' + str).slice(-2)
}
function demoSuccessHandler(transaction) {
// You can write success code here. If you want to store some data in database.
$("#paymentDetail").removeAttr('style');
$('#paymentID').text(transaction.razorpay_payment_id);
var paymentDate = new Date();
$('#paymentDate').text(
padStart(paymentDate.getDate()) + '.' + padStart(paymentDate.getMonth() + 1) + '.' + paymentDate.getFullYear() + ' ' + padStart(paymentDate.getHours()) + ':' + padStart(paymentDate.getMinutes())
);
$.ajax({
method: 'post',
url: "{!!route('dopayment')!!}",
dataType:"json",
data: {
"_token": "{{ csrf_token() }}",
"product": "{{ json_encode($productcode,JSON_FORCE_OBJECT) }}",
"Company": "{{ $company}}",
"Address": "{{$address}}",
"Contact": "{{$contact}}",
"razorpay_payment_id": transaction.razorpay_payment_id
},
complete: function (r) {
console.log('complete');
console.log(r);
}
})
}
</script>
<script>
var options = {
key: "{{ env('RAZORPAY_KEY') }}",
amount: '{{ $subtotal}}00',
name: 'AMCOR RAZORPAY',
description: 'AMCOR INTERNATIONAL',
image: 'https://i.imgur.com/n5tjHFD.png',
handler: demoSuccessHandler
}
</script>
<script>
window.r = new Razorpay(options);
document.getElementById('paybtn').onclick = function () {
r.open()
}
</script>
@endsection
路由功能是
Route::post('bill', 'RazorpayController@bill')->name('pay');
Route::post('dopayment', 'RazorpayController@dopayment')->name('dopayment');
Ajax将自动将数据转换为JSON(有关详细信息,请查看您的控制台)
因此,当您在dopayment()
接收时,您必须将JSON数据解码到一个数组中,以便可以在其中循环:$product=JSON\u decode($request-
Laravel中的刀片模板是否有类似Smarty的截断修改器? 我知道我可以在模板中写出实际的php,但我正在寻找更好的东西来编写(我们不要讨论整个php是一个模板引擎)。 例如,我在寻找这样的东西: 我知道我可以通过作曲家使用像树枝这样的东西,但我希望Laravel本身具有内置功能。 如果没有,可以像Smarty提供的那样创建自己的可重用修饰符。我喜欢Blade不会过度使用所有语法,但我认为tr
我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。
需要在刀片laravel-value输入中输入变量php,变量i to用于添加i的值,在值=“{$TAREFA-&>TETAPA.i} 为此:value=“{Tarefa->Tetapa1}value=”{Tarefa->Tetapa2}…至10
在我的模板中,我有以下内容: 在这篇文章中,我想突出显示字符串中的所有单词 所以我想我创建了一个新的刀片指令: 错误:缺少参数2 发现指令不包含2个参数。我尝试了所有我能找到的解决办法,但没有一个奏效。它们总是以普通字符串的形式返回参数,甚至不传递实际值。 我尝试添加一个助手函数,如下所述:https://stackoverflow.com/a/32430258/928666.不起作用: 错误:未
我在刀片模板中有一个循环foreach,我在其中打印来自特定模型的数据,问题是我无法获得“$pedido”的值- 奇怪的是当我给这个“$pedido”编码时- 但是编码这个“$pedido- 数据从控制器发送: 另一件奇怪的事情是,我有相同的代码和不同的模型,它是工作的。 提前感谢您的帮助
问题内容: 目前这是我的看法 这是输出 我想展示这样的东西 问题答案: 很简单 首先将解码后的变量发送到视图(请参见Laravel Views): 然后只需使用常见的刀片构造(请参见Laravel模板制作):