By default CakePHP uses the session timeout value in php.ini
But sometimes you might want to specify a very short Session timeout for testing your code
To do that you open Config/core.php and add a value to the "Session" Configure::write area
Configure::write('Session', array(
'defaults' => 'php',
'timeout' => 1 // 1 minute for testing
));
The reason I needed to shorten my timeout was that I was creating jquery mobile page that did an ajax request to update itself and when the session had expired I needed to test the error: block of the ajax request. I was using the CakePHP ajax Js Helper
I've recently removed all references to the JsHelper from my CakePHP application for a number of reasons:
- As far as someone on the cakephp IRC channel it's not going to be a part of Cake 3
- When you use the link method and you have about 160 links on a page you get 160 $.ajax({}) blocks embedded in your page
- When you try and say cache that code to disk cake didn't seem to delete the temporary files so you had a growing number of used once files in webroot/js (which had to be writeable to allow the files to be generated)
- You can write plain jquery 1 or 2 blocks of plain jquery to replace the autogenerated code and it's a lot smaller and simple
// this creates a <a href=""> link
// and performs an ajax call as it's
// action
//
echo $this->Js->link(
$map['territory_number'], // This is the link text
array( // this is the url it submits to
'controller' => 'maps',
'action' => 'view_details',
$map['id']
),
array(
'method' => 'GET', // use GET which is the default
'update' => "#" . 'container-' . $key , // element on page to update with the content from the reply
'before' => '$.mobile.loading("show");',
'success' => '$.mobile.loading("hide");',
'error' => '$.mobile.loading("hide"); $("#error-pop-error").html(errorThrown); $("#error-pop").popup(); $("#error-pop").popup("open");',
//'confirm' => 'Y\'all really want to do this?',
'class' => 'my-btn ' . $class
)
)

0 Comments