执行一个PHP方法一次

问题描述:

我称第一次这条路线,其中我把会话0:执行一个PHP方法一次

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

之后我打电话这是由服务器执行的2倍的另一方法:

public function index() 
{ 
    $this->session = $_SESSION['isFacebookRegistration']; 
    error_log(print_r($_SESSION['isFacebookRegistration'],true), 3, "/tmp/error.log"); 
    $_SESSION['isFacebookRegistration'] = 3; 
    return $this->render('template/index.twig'); 
} 

该观点是:

{{ dump(session) }} 

在控制台$_SESSION['isFacebookRegistration'],我得到:0 3,在视图外核层y 3。所以问题是,可以发送视图值0,之后修改3中的值$_SESSION['isFacebookRegistration']?我重复说index()方法是由服务器调用2次。

你需要这个?如果我理解正确的话,怎么把我的英语不是很好

private $flag = false; 

public function index() 
{ 
    $this->session = $_SESSION['isFacebookRegistration']; 
    error_log(print_r($_SESSION['isFacebookRegistration'],true), 3, "/tmp/error.log"); 

    if ($this->flag) { 
     $_SESSION['isFacebookRegistration'] = 3; 
    } else { 
     $this->flag = true; 
    } 

    return $this->render('template/index.twig'); 
} 

你也可以传递一个额外的参数(我认为这将是更好):

public function index($changeSessionValue = false) 
{ 
    $this->session = $_SESSION['isFacebookRegistration']; 
    error_log(print_r($_SESSION['isFacebookRegistration'],true), 3, "/tmp/error.log"); 

    if ($changeSessionValue) { 
     $_SESSION['isFacebookRegistration'] = 3; 
    } 

    return $this->render('template/index.twig'); 
} 
+0

不行的,所以当我存取权限路线主页,方法index()被调用2次。现在我想如果我访问第一次主页(方法索引()被称为2次,并且会话中的值需要为0)。如果我第二次访问路由主页(方法index()被执行2次,并且该值需要为3) – TanGio

+0

在你的情况下,我只得到'0 0' – TanGio

+0

' isSecondCall){ \t \t $ _SESSION [ 'isFacebookRegistration'] = 3; \t \t} else { \t \t \t $ this-> isSecondCall = true; \t \t} \t \t var_dump($ _ SESSION ['isFacebookRegistration']); \t \t} \t} \t $ a = new Test; \t $ a-> index(); \t $ a-> index();' 适合我 – deniskoronets