2017-01-03 87 views
1

我在我的控制器中創建了一個新的會話,並從數據庫中填充了一些數據。在刀片服務器中使用會話數據 - Laravel

那是控制器代碼:

public function index(Request $request) { 
    $products = Products::with('categories')->get()->take(5); 
    $request->session()->put('session_products', $products); 
    return view('shoppingcard.card'); 
} 

,並在接下來的控制器功能我檢索會話數據。

public function receiver(Request $request) { 
    if($request->session()->has('session_products')) { 
     echo $request->session()->get('session_products'); 
    } 
    else return "stop no session"; 

    return view('shoppingcard.endview'); 
} 

現在,如果我做了:return $request->session()->get('session_products');我得到我需要的一切。

這是從會議內容的虛擬數據:

{"id":5,"title":"Beautiful Unicorn","price":"20.00","sale_price":"15.00","status":"active","created_at":null,"updated_at":null,} 

現在我在endview刀片和要輸出的數據。

如何輸出特定數據,如「標題」?

+0

噢,對不起,我是新來的整個會話,cookie的事情.. – WellNo

回答

1

即數據被序列化到會話,並解序列化回對象。所有你需要的是利用這些信息,你通常會完全相同的方式:

public function receiver(Request $request) { 
    if(! $request->session()->has('session_products')) { 
     return "stop no session"; 
    } 

    return view('shoppingcard.endview') 
      ->with('title', $request->session()->get('session_products')[0]['title']); 
} 

或者你可以這一切傳遞到您的看法:

public function receiver(Request $request) { 
    if(! $request->session()->has('session_products')) { 
     return "stop no session"; 
    } 

    return view('shoppingcard.endview') 
      ->with('products', $request->session()->get('session_products')); 
} 

而在視圖中使用它:

@foreach($products as $product) 
    {{ $product['title'] }} 
@endforeach 
+0

呵呵好吧,我以爲我可以訪問數據,而無需打開一個新的變量..對不起,我完全是新的這..但非常感謝! – WellNo

+0

編輯添加一些選項 –

+0

是的,非常感謝,我玩的代碼剪切:) – WellNo

1

那麼爲了訪問標題元素,你需要將json字符串轉換爲數組。要做到這一點,你需要使用PHP的json_decode函數將字符串解碼,然後訪問數組,像這樣:

$decodedJsonString = json_decode($request->session()->get('session_products'), true); 

訪問它像$decodedJsonString[id]['title'];

More about json_decode

更新#1

使用用()或compact()方法將laravel's發送到視圖

with()and compac噸都是口才方法

More about eloquent

+1

好吧,我會嘗試,但爲什麼用json_decode?我看到它也適用@Antonio Carlos Riberio給我的解決方案 - 非常感謝! – WellNo

+0

那麼如果你想用它來顯示視圖,那麼你必須將它從(json)字符串轉換爲數組,以便你可以訪問每個元素,但是如果你只想要完整的字符串,那麼@antonio carlos答案是最好的! –

+0

我明白了,非常感謝所有的幫助!這頁是真棒:) – WellNo

1

您的會話將產品保存爲json。你可以用json_decode解碼,然後訪問每個產品。

代碼:

$products = json_decode($request->session()->get('session_products'), true); 

foreach($products as $product) 
{ 
    echo $product['title']; 
}