2016-03-22 9 views
7

मैं कुछ क्लिक ईवेंट पर कुकी सेट कर रहा हूं। तब कुकी में मूल्य भंडारण के बाद, मैं करने के लिएलार्वेल में कुकीज़ के साथ कैसे काम करें 5.2

  1. चेक कुकी के अस्तित्व के लिए मैं Laravel सरकारी डॉक्स का हवाला देते हुए एक समारोह का विकास किया है चाहता हूँ
  2. जाओ कुकी मानों

। कंसोल दिखाता है कि कुकीज़ सेट कर दी गई हैं। लेकिन उसके बाद, मैं दृश्य (ब्लेड टेम्पलेट) के लिए दो बिंदु (उपर्युक्त सूची में उल्लिखित) को हल नहीं कर सकता। यह हमेशा (Cookie::get('cookie.clients')) 'शून्य' दिखाता है। लेकिन ब्राउज़र कंसोल उस कुकी को प्रदर्शित करता है । अगर कोई जवाब जानता है, तो इसकी सराहना की जाएगी।

मेरा कोड यहां है।

नियंत्रक

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'); 
    } 
} 

देखें

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

क्या आप कुकी को "कुछ क्लिक ईवेंट" में जावास्क्रिप्ट के माध्यम से सेट कर रहे हैं, या अपने 'क्लाइंट कंट्रोलर' में विधि 'कुकीडैड' को कॉल करके? – Padarom

+0

@ पैडारोम, विधि 'कुकीएड() ' –

उत्तर

4

आप एक कुकी वस्तु बना रहे हैं, लेकिन आप प्रतिक्रिया के साथ यह नहीं भेज रहे हैं:

$value = $request->cookie('name'); 

अधिक जानकारी के लिए laravel दस्तावेज़ देखें।

आप या तो, यह सीधे अपने जवाबी कार्रवाई के लिए एक नियंत्रक

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

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

में जोड़ सकते हैं या आप एक कुकी कतार और AddQueuedCookiesToResponse मिडिलवेयर का उपयोग स्वचालित रूप से प्रतिक्रिया में जोड़ने के लिए कर सकते हैं।

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

return redirect('/client'); 
1

यहां एक और परिप्रेक्ष्य है।

यदि मैं सही ढंग से समझ गया तो आपने क्लाइंट पक्ष पर कुकी सेट करने के लिए जावास्क्रिप्ट का उपयोग किया है, और आप इसे सर्वर की तरफ ले जाना चाहते हैं।

Laravel उसकी कुकी एन्क्रिप्ट करता है और जब आप का उपयोग $request->cookies() आप decrypted मूल्यों को प्राप्त है, और ग्राहक की ओर से कुकीज़ को पुन: प्राप्त डिक्रिप्शन प्रक्रिया में नहीं होता है और हम null रों मिलता है। मुझे लगता है, मैं उपयुक्त स्रोत कोड खोदने में सक्षम नहीं हूं :)

आप क्लाइंट द्वारा कुकी सेट को पुनर्प्राप्त करने के लिए अभी भी कच्चे PHP $_COOKIE['cookie_clients'] का उपयोग कर सकते हैं। नोटिस, . को PHP (as seen on php.net) द्वारा _ में परिवर्तित किया गया है।

वैकल्पिक रूप से, आप Http/Middleware/EncryptCookies.php में $except में ब्याज की कुकी का नाम जोड़ सकते हैं, जो आप $request->cookie() के अधिक Laravel दृष्टिकोण के साथ यह लेने के लिए अनुमति देगा।

मुझे यकीन है कि यहां लार्वेल के आसपास जाने के कई अन्य तरीके हैं, उम्मीद है कि यह आपको यह देखने का विचार देता है कि आप कहां देखना चाहते हैं या नहीं। सौभाग्य।

संबंधित मुद्दे