是否可以将数据存储在控制器的一个私有变量中(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中启用了缓存。
感谢您的帮助,对不起我的英语;)
答案 0 :(得分:1)
Symfony没有为您所描述的内容提供机制。但是,任何适用于PHP的解决方案都适用于Symfony。
这取决于您是否要记住每个用户或所有用户的广告。如果您想为每个用户记住它,请使用Gareth Parker建议的会话。如果你想为所有用户记住它,那么你需要APC用户缓存,内存缓存或其他基于内存的键值存储。
您也可以使用Doctrine结果缓存。见http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html
答案 1 :(得分:0)