[英]Cache variable in controller in Symfony2
是否可以将数据存储在控制器(Symfony2)的一个私有变量中?
一个例子:
/**
* Class CatsController
*
* @Route("cats")
* @Cache(expires="+600 seconds", public=true)
* @package oTeuGato\AppBundle\Controller
*/
class CatsController extends Controller {
/**
* @var $advertisements Advertisement[]
*/
private $advertisements;
/**
* Index advertisements page
*
* @Route("", name="oTeuGato_Cats")
* @Method("GET")
* @return Response
*/
public function indexAction()
{
$this->advertisements = ....(Use a service for gets advertisements)
}
/**
* Index advertisements by page
*
* @Route("/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1}, name="oTeuGato_Cats_ByPage")
* @Method("GET")
* @return Response
*/
public function indexByPageAction(){
....
}
在此示例中,每当有人在控制器中调用URL:cats / 1时,我都需要他们拥有以前调用的方法(/ cats)的所有广告。
这可能吗?
注意:我在app.php文件和app_dev.php中启用了缓存。
感谢您的帮助,对不起我的英语;)
Symfony没有提供您所描述的机制。 但是,任何适用于PHP的解决方案都将适用于Symfony。
这取决于您是否要记住每个用户或所有用户的广告。 如果您想为每个用户记住它,请按照Gareth Parker的建议使用会话。 如果您想为所有用户记住它,则需要APC用户缓存,内存缓存或其他基于内存的键值存储。
使用Doctrine结果缓存也可能很幸运。 参见http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.