Я устанавливаю cookie на событие click. Затем, после сохранения значения в cookie, я хочу
Я разработал функцию, обратившись к официальным документам Laravel. Консоль показывает, что файлы cookie установлены. Но после этого я не могу решить две точки (упомянутые в приведенном выше списке) для просмотра (Blade Template). Он всегда показывает (Cookie::get('cookie.clients'))
'null'. Но консоль браузера отображает этот файл cookie. Если кто-то знает ответ, это будет оценено.
Вот мой код.
контроллер
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
Вы создаете объект cookie, но вы не отправляете его с ответом.
Вы можете либо добавить его прямо к ответу в контроллере
$cookie = Cookie::forever('cookie.clients', $clients); return redirect('/client')->withCookie($cookie);
Или вы можете поставить в очередь куки-файл и использовать промежуточное программное обеспечение AddQueuedCookiesToResponse для автоматического добавления его в ответ.
Cookie::queue(Cookie::forever('cookie.clients', $clients)); return redirect('/client');
Вы пытались отобразить файл cookie через объект Request?
$value = $request->cookie('name');
Дополнительную информацию см. В документе laravel: https://laravel.com/docs/5.2/requests#cookies
Вот еще одна перспектива.
Если я правильно понял, вы использовали Javascript для установки cookie на стороне клиента, и вы хотите забрать его на стороне сервера.
Laravel шифрует свои файлы cookie, и когда вы используете $request->cookies()
вы получаете дешифрованные значения, а извлечение файлов cookie с клиентской стороны не проходит процесс дешифрования, и мы получаем null
s. Я думаю, я не смог выкопать соответствующий исходный код 🙂
Вы можете использовать необработанный PHP $_COOKIE['cookie_clients']
чтобы получить cookie, установленный клиентом. Обратите внимание,. преобразуется в _
через PHP ( как видно на php.net ).
Кроме того, вы можете добавить имя интересующего файла cookie в $except
Http/Middleware/EncryptCookies.php
, что позволит вам забрать его с помощью подхода Larevel в $request->cookie()
.
Я уверен, что здесь есть много других способов обойти Laravel, надеюсь, это даст вам представление о том, где искать, если вам не нравится любой подход. Удачи.