繁体   English   中英

Symfony2中控制器中的缓存变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM