2015-05-31 5 views
0

Этот вопрос следующий из this question.Почему cookie не задан в Laravel Lumen

У меня есть сообщение на мой взгляд, кто говорит: This site uses cookie [...] Close.

Когда пользователь нажимает на Close, запрос ajax отправляется на контроллер. Функция заключается в следующем:

public function acceptCookie(Request $request) 
{ 
    if ($request->valid == 'accept') { 
     $response = new Response('acceptCookie'); 
     if ($response->withCookie(cookie('acceptCookie', 'accepte', 44000))) { 
      return Response()->json(array('statut' => 'Succes'));  
     } else { 
      return Response()->json(array('statut' => 'Erreur')); 
     }    
    } else { 
     return Response()->json(array('statut' => 'Erreur')); 
    } 
} 

У меня нет какой-либо ошибки и JSON всегда возвращает {"statut":"Succes"}

Почему печенье не установлен?

+0

Вы пробовали '$ response-> withCookie (cookie() -> forever ('name', 'value'));'? –

+0

Да. Это не слишком – Zl3n

+0

Любые идеи? Все еще осталась та же проблема – Zl3n

ответ

2

Основываясь на документации Lumen, кажется, что вам нужно поставить в очередь файл cookie для ответа, такого как тот, который приведен в вашем примере. Вот что говорят документы:

Queuing Куки For The Next Response

Если вы хотите установить куки, прежде чем был создан ответ, использовать метод Cookie :: очереди(). Файл cookie автоматически будет прилагается к окончательному отклику вашего приложения.

Cookie :: queue ($ name, $ value, $ minutes);

Мое предложение состоит в том, чтобы попытаться заменить theCookie на очередь на файл cookie. Но вам может потребоваться переписать функцию немного, чтобы разместить, потому что кажется, что вы пытаетесь отправить ответы от одного запроса.

Надеюсь, это сработает для вас!

+0

HI, спасибо за ваш ответ. Я попробую asap :) – Zl3n

+0

zien: Я также хотел сказать, что в некоторых случаях я просто использовал PHP setcookie и $ _COOKIE вместо того, чтобы пытаться использовать материал Люмена. Когда все остальное терпит неудачу, это все еще PHP. :) –

+0

Вернитесь на этот вопрос, потому что это не решено. Мне это нужно. PHP Cookie не видит Lumen (например, 'var_dump ($ _ COOKIE)'). ** Как установить cookie с Lumen **? Почему это так сложно? – Zl3n

0

Основано на Illuminate\Http\ResponseTrait линия 28, метод Illuminate\Http\Response::withCookie, возвращающий $this.

/** 
* Add a cookie to the response. 
* 
* @param \Symfony\Component\HttpFoundation\Cookie $cookie 
* @return $this 
*/ 
public function withCookie(Cookie $cookie) 
{ 
    $this->headers->setCookie($cookie); 

    return $this; 
} 

Означает, что в вашем коде имеется логическая ошибка.

// This always return Illuminate\Http\Response instance, 
// thus it will never reach ELSE statement forever. 
if ($response->withCookie(cookie('acceptCookie', 'accepte', 44000))) { 
    return Response()->json(array('statut' => 'Succes'));  
} else { 
    return Response()->json(array('statut' => 'Erreur')); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^