【问题标题】:Kohana : how to get the sub-request's (HMVC) cookie changesKohana : 如何获取子请求 (HMVC) 的 cookie 更改
【发布时间】:2011-09-25 01:56:52
【问题描述】:

我使用以下代码在 HMVC 结构中执行子请求:

对“page1”的请求将通过以下代码向“page2”发出子请求:

$request = Request::factory('/page2')
           ->method(Request::POST)
           ->post($postData)
           ->execute();

“page2”中的执行将添加/更改cookie项的值

setcookie('new_var', $newValue);

现在我需要在“Page1”中捕获 cookie“new_var”的新值。那我该怎么做呢?

PS:由于一些限制,我必须在 cookie 中设置 'new_var',因此将其放入会话不是答案。

==========更新==============

按照 zerkms 的建议,我做了这样的事情:

$response = Request::factory('/page2')
           ->method(Request::POST)
           ->post($postData);

//before
error_log(print_r($response->cookie(), TRUE));

$response->execute();

//after
error_log(print_r($response->cookie(), TRUE));

“之前”和“之后”日志条目的结果都是空数组。 :(

【问题讨论】:

    标签: cookies kohana hmvc


    【解决方案1】:

    在 kohana 中你最好使用Response::cookie() 方法。

    在这种情况下,您可以使用此方法来检索和设置 cookie(即使在同一个请求中)

    【讨论】:

    • Response::cookie 不是静态方法,它为当前响应设置/获取 cookie。它只能在 $this->response 范围内调用。响应将 cookie 存储在 $this->_cookies protected var 中,而不是在函数调用时立即设置它。我认为在这种情况下Cookie helper 会是更好的解决方案。
    • @atma:当然它不是静态方法 ;-) 但是编写方法的完整签名(静态或实例之一)是常见的约定。另外 - 再次阅读他的问题,Cookie::set() 对他没有帮助,只要他想在 same 请求中设置和阅读
    • 谢谢,我知道约定。让我们再次阅读帖子: "page2" 中的执行将添加/更改 cookie 项的值... 现在我需要捕获 cookie "new_var" 的新值“第 1 页”。那么 Request::initial() 和一些子请求是一样的吗?
    • @atma:来吧,我们可以为同一个请求对象设置cookie。是的,我们可以在内部请求中获得相同的(外部)请求对象
    • @atma, zerkms :感谢您的帮助。我现在没有我的代码,所以我无法用你的建议进行测试,但既然你提到了 Response->cookie() 和 cookie 类,我还发现有 Request::current()->cookie ()。他们真的让我很困惑。因此,我提出了另一个关于它们差异的问题:stackoverflow.com/questions/7543811/…
    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2019-06-20
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多