2015-07-28 5 views
-1

Я называю первый раз этот маршрут, где я ставлю в сессии 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 и после этого изменить значение $_SESSION['isFacebookRegistration'] в 3? Я повторяю, что метод index() вызывает вызов 2 раза сервером.

ответ

1

Вам это нужно? Если я вас правильно понимаю, сог мой английский не очень хорошо

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

Не работает, поэтому, когда я Acces домашнюю маршрут , метод index() вызывается 2 раза. Теперь я хочу, чтобы получить доступ к домашней странице первого раза (метод index() вызывается 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 var_dump ($ _ SESSION ['isFacebookRegistration']); \t \t} \t \t $ a = новый тест; \t $ a-> index(); \t $ a-> index(); ' Работает для меня – deniskoronets