Php 使用twig设置会话变量

Php 使用twig设置会话变量,php,twig,php-5.3,php-5.4,twig-extension,Php,Twig,Php 5.3,Php 5.4,Twig Extension,我有个问题。我在我的站点上有一条路线,在其中我在会话中放置了如下变量: public function userCaptcha(){ $_SESSION['isFacebookRegistration'] = 0; } public function userCaptcha(){ $_SESSION['isFacebookRegistration'] = 0; } public function index(){ if (isset($_SESSION['flag

我有个问题。我在我的站点上有一条路线,在其中我在会话中放置了如下变量:

 public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
 }
public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
}

public function index(){
    if (isset($_SESSION['flag'])) {
        $_SESSION['isFacebookRegistration'] = 3;
    }
    $_SESSION['flag'] = true;
    $this->session = $_SESSION;
    return $this->render('template/index.twig');
}
现在我有了另一个渲染视图的路线:

public function index(){
    $this->session = $_SESSION;
    return $this->render('template/index.twig');
}
在索引模板中,我执行以下操作:

 {{ dump(session.isFacebookRegistration) }}
 {% set session = session|merge({'isFacebookRegistration' : 3}) %}

我访问第一条路由:userCaptcha()一次,但访问路由索引()两次,通常我需要看到第一次0和第二次3。但我只看到了2次0。你能帮我吗?这个想法是第一次显示0表示其余的3。Thx预先

您不能在细枝端设置PHP变量。每次重新加载视图时,对变量所做的更改都将丢失。您可以尝试以下方法:

 public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
 }
public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
}

public function index(){
    if (isset($_SESSION['flag'])) {
        $_SESSION['isFacebookRegistration'] = 3;
    }
    $_SESSION['flag'] = true;
    $this->session = $_SESSION;
    return $this->render('template/index.twig');
}

这样,第一次执行index()不会更改
isFacebookRegistration
值,但会设置一个标志。下一次,条件将为true,
isFacebookRegistration
将更改

不能在细枝端设置PHP变量。每次重新加载视图时,对变量所做的更改都将丢失。您可以尝试以下方法:

 public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
 }
public function userCaptcha(){
    $_SESSION['isFacebookRegistration'] = 0;
}

public function index(){
    if (isset($_SESSION['flag'])) {
        $_SESSION['isFacebookRegistration'] = 3;
    }
    $_SESSION['flag'] = true;
    $this->session = $_SESSION;
    return $this->render('template/index.twig');
}
这样,第一次执行index()不会更改
isFacebookRegistration
值,但会设置一个标志。下一次,条件将为true,
isFacebookRegistration
将更改