如何从 Laravel 的控制器中传递变量到视图
Posted
技术标签:
【中文标题】如何从 Laravel 的控制器中传递变量到视图【英文标题】:How to pass variables to view from controller in Laravel 【发布时间】:2016-06-13 11:33:42 【问题描述】:当用户下订单时,它会将他重定向到另一个页面,检查他是否付款。现在控制器已经准备好了,我需要初始化这个盒子,我需要一些变量。我不知道如何将它实现到 payment.blade.php 中。这是我尝试过的,似乎没有用。
这是控制器
public function paymentView( $orderId, $userId )
$order = Session::all();
$order = Order::where('order_id', $orderId)->first();
if (!$order)
App::abort(404);
$userID = $order['user_id'];
$orderID = $order['order_id'];
$options = array(
...
);
// Initialise Payment Class
$box = new Cryptobox ($options);
// coin name
$coinName = $box->coin_name();
// Successful Cryptocoin Payment received
if ($box->is_paid())
if (!$box->is_confirmed())
$message = "Thank you for payment (payment #".$box->payment_id()."). Awaiting transaction/payment confirmation";
else
if (!$box->is_processed())
$message = "Thank you for order (order #".$orderID.", payment #".$box->payment_id()."). We will send soon";
$box->set_status_processed();
else $message = "Thank you. Your order is in process"; // General message
else $message = "This invoice has not been paid yet";
$languages_list = display_language_box($def_language);
return View::make('site.cart.payment', [
'order' => $order,
]);
现在我正试图把它放在我的视野中
@section('content')
@foreach($order->getOrderData(true) as $productId => $item)
<?php if (!$box->is_paid()) echo "<h2>Pay Invoice Now - </h2>"; else echo "<br><br>"; ?>
<?php echo $box->display_cryptobox(true, 580, 230); ?>
@endforeach
@endsection
当我运行该页面时,我遇到了 box
未定义的错误。我如何在视图中获取此信息?
【问题讨论】:
yy... 与您添加的 $order 完全相同。 【参考方案1】:与您将$order
传递给视图的方式相同。用这个返回替换你方法底部的return
。
return View::make('site.cart.payment', [
'order' => $order,
'box' => $box
]);
传递给View::make()
的第二个参数是视图应该可以使用的数据数组。
【讨论】:
问题出在 foreach 但不明白是什么原因和原因以上是关于如何从 Laravel 的控制器中传递变量到视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在laravel php中将变量从视图传递到控制器而没有表单
如何在 Laravel 中将变量从视图传递到控制器而不使用 URL 或表单