IndexController :: indexAction中的代码在每个请求之前执行

时间:2013-12-05 11:47:46

标签: session routes phalcon

是错误还是功能?

我有两个控制器IndexController和TestController。

第一个看起来像这样:

class IndexController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        $products = $this->basket->get('products', []);
        $products[] = uniqid('index.index');
        $this->basket->set('products', $products);
    }

    public function testAction()
    {
        var_dump($this->basket->products);
    }
}

我只是在一个带有indexAction的会话中保存一个数组,并在testAction中显示该数据。

对于index / test的第一个请求输出是一个空数组。但是第二个和所有后续请求都添加了一个新元素。如果我对行$this->basket->set('products', $products);进行注释,则下一个索引/测试请求将向数组添加另一个值,但在此之后不会发生额外的推送到数组。

然后我添加

class TestController extends \Phalcon\Mvc\Controller
{
    public function indexAction()
    {
        $products = $this->basket->get('products', []);
        $products[] = uniqid('test.index');
        $this->basket->set('products', $products);
        die();
    }

    public function testAction()
    {
        var_dump($this->basket->products);
        die();
    }
}

但是对于请求测试/测试,我再次改变会话变量。

看起来路由索引/索引总是在任何其他路由之前执行。它是一个功能,错误还是某种错误配置?我从官方文档中为多模块应用程序使用标准配置。

1 个答案:

答案 0 :(得分:3)

这很可能是因为您的浏览器在后台遇到了/favicon.ico。在不同的框架中,我多次被这种情况所困扰。

尝试添加favicon.ico文件(或阻止该路径的规则)并查看问题是否仍然存在。