[英]Laravel share data between few controllers
我有商店站點。 我想與我的模型訂單中的最后一個orderId共享OrderController和PanelCotroller數據。 這是我的代碼:
class OrderController extends Controller
{
private $errors = [];
public function addOrder()
{
if (!Auth::check()) {
$this->errors[] = 'error';
return redirect()->back()->with('errors', $this->errors);
}
$userId = Auth::id();
$order = new Order();
$isOrdered = $order->addOrder($userId, $this->cart);
if ($isOrdered){
return redirect('panel')->with('info', 'Everything fine');
}
}
}
現在我的函數addOrder返回true或false。 當我調用函數getOrderId時,可以在OrderController上看到orderId。 但是我想在PanelController-mainSite操作中調用getOrderId。 當我從Order創建對象時,我的函數getOrderId將返回null ...
class Order extends Model
{
protected $table = 'orders';
public $timestamps = false;
private $orderId;
public function addOrder($userId, Cart $cart)
{
$order = new Order();
$order->user_id = $userId;
$order->save();
foreach ($cart->getItems() as $cartProduct) {
$orderProducts = new OrderProduct();
$orderProducts->product_id = $cartProduct->getProduct()->id;
$orderProducts->order_id = $order->id;
$orderProducts->quantity = $cartProduct->getQuantity();
$orderProducts->price = $cartProduct->getProduct()->price;
$orderProducts->save();
}
$cart->clear();
$this->orderId = $order->id;
return true;
}
public function getOrderId()
{
return $this->orderId;
}
}
這是我的PanelController。
PanelController類擴展Controller {
public function mainSite()
{
if (Auth::check()) {
$order = new Order();
$order -> getOrderId() <---- here return me null instead my
last OrderId.
return View("panel");
} else {
return redirect('/login');
}
}
如何對所有控制器可見我的變量orderId或方法getOrderId?
您可以通過兩種方式在其他控制器中獲取值:
BaseController
設置值,然后將其擴展到所需的位置。 我更喜歡第二種方法。
創建訂單后,將ID添加到您的會話中。 然后在PanelController中,您可以從會話中獲取ID。
OrderController:
$order = new Order();
$isOrdered = $order->addOrder($userId, $this->cart);
session(['orderid' => $order->id]);
PanelController:
if (session()->has('orderid'))
$order = Order::find(session('orderid'));
else
dd('No order id found in session!');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.