如何从 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 或表单

将数据从控制器传递到 Laravel 中的视图

Laravel:我正在尝试将变量从视图传递到控制器,但它返回 null

如何将数据从控制器传递到 Laravel 中的视图

在 Laravel 5.1 中通过 AJAX 将用户输入数据从视图传递到控制器