# |
Jun 22nd 2021, 11:39 |
kevin.pfeifer |
to be honest i too had to fiddle with these things quite some time till i got it working :) |
# |
Jun 22nd 2021, 11:38 |
neon1024 |
Success! Thanks again for the tips @kevin.pfeifer appreciate the help |
# |
Jun 22nd 2021, 11:35 |
neon1024 |
The fact that CookieCollection is immutable caught me out |
# |
Jun 22nd 2021, 11:21 |
neon1024 |
Might be time for a coffee break ,:) |
# |
Jun 22nd 2021, 11:19 |
neon1024 |
Oh, good spot |
# |
Jun 22nd 2021, 11:19 |
kevin.pfeifer |
you need to set the CookieColleciton on the response, not the request |
# |
Jun 22nd 2021, 11:19 |
kevin.pfeifer |
you mixed request and repsonse there FYI |
# |
Jun 22nd 2021, 11:18 |
kevin.pfeifer |
would be something like ```$cookie_collection = $this->getRequest()->getCookieCollection()->add($cookie); $new_response = $this->getResponse()->withCookieCollection($cookie_collection) $this->setResponse($new_response);``` |
# |
Jun 22nd 2021, 11:17 |
neon1024 |
Thanks @kevin.pfeifer I’ll give this approach a try :bow: |
# |
Jun 22nd 2021, 11:17 |
kevin.pfeifer |
can ge quite lengthy :) |
# |
Jun 22nd 2021, 11:17 |
kevin.pfeifer |
and if you want to stick to the getter/setter methods sure |
# |
Jun 22nd 2021, 11:16 |
kevin.pfeifer |
thats why I always like to make a copy of the request with `$request = $this->getRequest()` and work with that variable unless i need to set it back |
# |
Jun 22nd 2021, 11:16 |
neon1024 |
imeanimsureitcouldbelongerifwejustaddedsomemorenestedmethodsintotherebutyoucantbetoocarefullthesedaysyouknow |
# |
Jun 22nd 2021, 11:16 |
kevin.pfeifer |
,:) |
# |
Jun 22nd 2021, 11:16 |
neon1024 |
`$this->setRequest($this->getRequest()->withCookieCollection($this->getRequest()->getCookieCollection()->add($cookie)));` oof |
# |
Jun 22nd 2021, 11:15 |
slackebot1 |
'pages', 'action' => 'display', 'success' ] );``` |
# |
Jun 22nd 2021, 11:15 |
kevin.pfeifer |
``` // Only save cookie if user selected it if(!empty($data['remember_my_data'])){ $cookie = Cookie::create( 'remember_my_data', $data ); $this->response = $this->response->withCookie( $cookie ); } else { $this->response = $this->response->withExpiredCookie(new Cookie('remember_my_data')); } return $this->redirect( [ 'controller' => |
# |
Jun 22nd 2021, 11:15 |
kevin.pfeifer |
I don’t return the response instance, i just do a redirect |
# |
Jun 22nd 2021, 11:15 |
kevin.pfeifer |
or whatever |
# |
Jun 22nd 2021, 11:15 |
kevin.pfeifer |
before redirecting |
# |
Jun 22nd 2021, 11:15 |
kevin.pfeifer |
could be that you need to adjust the returned cookie collection as well |
# |
Jun 22nd 2021, 11:14 |
neon1024 |
…and return that response instance I suppose? |
# |
Jun 22nd 2021, 11:14 |
kevin.pfeifer |
but you need to set it back into the response as well |
# |
Jun 22nd 2021, 11:14 |
kevin.pfeifer |
well your code above returns the new cookie collection |
# |
Jun 22nd 2021, 11:13 |
neon1024 |
Not an intuitive api for sure imho |
# |
Jun 22nd 2021, 11:12 |
neon1024 |
I wonder what all this CookieCollection business is about then :thinking_face: |
# |
Jun 22nd 2021, 11:12 |
kevin.pfeifer |
i did it like that |
# |
Jun 22nd 2021, 11:12 |
neon1024 |
I guess it just dies when the request instance does |
# |
Jun 22nd 2021, 11:12 |
kevin.pfeifer |
``` $cookie = Cookie::create( 'remember_my_data', $data ); $this->response = $this->response->withCookie( $cookie );``` |
# |
Jun 22nd 2021, 11:10 |
neon1024 |
`$this->getRequest()->getCookieCollection()->add($cookie);` I’ve tried this and no cookie shows in my browser debug tools |
# |
Jun 22nd 2021, 11:10 |
neon1024 |
Stupid question but how do I write a cookie which will persist across requests? |
# |
Jun 22nd 2021, 10:21 |
kevin.pfeifer |
even if it is tidious |
# |
Jun 22nd 2021, 10:21 |
kevin.pfeifer |
otherwise I would personally just go from error to error till it works ^^ |
# |
Jun 22nd 2021, 10:20 |
drashti.b.patel |
ok will check thanks for the help |
# |
Jun 22nd 2021, 10:19 |
neon1024 |
Ahh, just found `$this->getRequest()->getSession()->id()` |
# |
Jun 22nd 2021, 10:19 |
kevin.pfeifer |
never done it myself so no promises :shrug: |
# |
Jun 22nd 2021, 10:18 |
kevin.pfeifer |
but I have heard that it can be quite finicky to setup |
# |
Jun 22nd 2021, 10:18 |
kevin.pfeifer |
there is a rector tool which partially upgrades your code https://book.cakephp.org/4/en/appendices/4-0-upgrade-guide.html |
# |
Jun 22nd 2021, 10:17 |
drashti.b.patel |
Or Is there any shortcut or any command line to update it |
# |
Jun 22nd 2021, 10:16 |
neon1024 |
I was looking at `Session::create()` but doesn’t seem to be it |
# |
Jun 22nd 2021, 10:16 |
drashti.b.patel |
In most of the controller I have used the initialize() function Do I need to set the return param every where? |