【问题标题】:Code in IndexController::indexAction executes before each requestIndexController::indexAction 中的代码在每个请求之前执行
【发布时间】:2013-12-22 08:19:24
【问题描述】:

这是错误还是功能?

我有两个控制器 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();
    }
}

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

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

【问题讨论】:

    标签: session routes phalcon


    【解决方案1】:

    这很可能是因为您的浏览器在后台点击 /favicon.ico。我已经在不同的框架中多次被这个问题所困扰。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2018-10-16
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多