2016-03-22 27 views
7

Tôi đang đặt cookie trên một số sự kiện nhấp chuột. Sau đó, sau khi lưu trữ giá trị trong cookie, tôi muốnCách làm việc với các cookie trong Laravel 5.2

  1. Kiểm tra sự tồn tại của Cookie
  2. giá trị cookie Nhận

tôi đã phát triển một chức năng bằng cách tham khảo Laravel tài liệu chính thức. Bảng điều khiển cho thấy rằng cookie đã được đặt. Nhưng sau đó, tôi không thể giải quyết hai điểm (được đề cập trong danh sách trên) cho xem (Blade Template). Nó luôn hiển thị (Cookie::get('cookie.clients')) 'null'. Nhưng bảng điều khiển trình duyệt hiển thị cookie đó . Nếu có ai biết câu trả lời, nó sẽ được đánh giá cao.

Đây là mã của tôi.

khiển

use App\Client; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use Validator; 
use App\Http\Controllers\Controller; 
use App\Repositories\ClientRepository; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Cookie; 

class ClientController extends Controller 
{ 
    public function cookieadd(Request $request, Client $client) 
    { 
     $clients = []; 
     if (Cookie::get('cookie.clients') != null) 
     { 
      $clients = Cookie::get('cookie.clients'); 
     } 
     array_push($clients, $client); 

     Cookie::forever('cookie.clients', $clients); 

     return redirect('/client'); 
    } 
} 

Xem

@if (Cookie::get('cookie.clients') != null) 
<p>cookie is set</p> 
@else 
<p>cookie isn't set</p> 
@endif 
+0

Bạn có đặt cookie qua javascript trong "một số sự kiện nhấp chuột" hay bằng cách gọi phương thức 'cookieadd' trong' Clientcontroller' của bạn? – Padarom

+0

@Padarom, bằng cách gọi phương thức 'cookieadd()' –

Trả lời

4

Bạn đang tạo một đối tượng Cookie nhưng bạn không gửi nó với các phản ứng.

Bạn có thể có thể, thêm nó trực tiếp đến phản ứng của bạn trong một bộ điều khiển

$cookie = Cookie::forever('cookie.clients', $clients); 

return redirect('/client')->withCookie($cookie); 

Hoặc bạn có thể xếp hàng một cookie và sử dụng AddQueuedCookiesToResponse Middleware để tự động thêm nó vào đáp ứng.

Cookie::queue(Cookie::forever('cookie.clients', $clients)); 

return redirect('/client'); 
1

Đây là một viễn cảnh khác.

Nếu tôi hiểu chính xác bạn đã sử dụng Javascript để đặt cookie ở phía máy khách và bạn muốn chọn nó ở phía máy chủ.

Laravel mã hóa cookie và khi bạn sử dụng $request->cookies() bạn nhận được các giá trị được giải mã và truy xuất cookie từ phía máy khách không vượt qua quá trình giải mã và chúng tôi nhận được null s. Tôi đoán, tôi chưa thể tìm ra mã nguồn thích hợp :)

Bạn vẫn có thể sử dụng PHP thô $_COOKIE['cookie_clients'] để truy xuất cookie được khách hàng đặt. Thông báo, . được chuyển đổi thành _ bằng PHP (as seen on php.net).

Hoặc, bạn có thể thêm tên của cookie quan tâm vào $except trong Http/Middleware/EncryptCookies.php, cho phép bạn chọn nó theo cách tiếp cận Laravel hơn $request->cookie().

Tôi chắc chắn có rất nhiều cách khác để đi quanh Laravel ở đây, hy vọng điều này mang đến cho bạn một ý tưởng về nơi để tìm nếu bạn không thích một trong hai cách tiếp cận. Chúc may mắn.

Các vấn đề liên quan