2015-06-28 9 views
3

Ранее в CakePHP 2.0. Я могу получить доступ к токениду внутри «если это сообщение» после того, как я нажал кнопку отправки. По-видимому, теперь, после того, как я нажал кнопку отправки в CakePHP 3.0, я больше не могу получать токенид в «если это условие сообщения». Как я могу продолжить доступ к параметру URL в поле «если это условие сообщения»? Я знаю, это действительно что-то простое. Может ли кто-нибудь просветить меня? Что мне не хватает?CakePHP 3.0 URL-адрес

URL

/пользователей/сброса/15d3a535ecdd4ec705378b146ef572cf5bb9bfc2

Контроллер

public function reset($token=null) { 

    if ($token) { //I am able to get the tokenid here. 

    Debugger::Dump($this->request->pass[0]); //I am able to get the tokenid here. 
    Debugger::Dump($this->request->params['pass'][0]); //I am able to get the tokenid here. 

     if ($this->request->is(['post'])) { 
       Debugger::Dump($token) //I am no longer able to get the tokenid. 
       Debugger::Dump($this->request->pass[0]); //I am no longer able to get the tokenid. 
       Debugger::Dump($this->request->params['pass'][0]); //I am no longer able to get the tokenid. 
     } 
    } 
} 

Посмотреть

<?php echo $this->Form->create(null, ['url' => ['controller' => 'Users', 'action' => 'reset']]); ?> 
<?php echo $this->Form->input('password'); ?> 
<?php echo $this->Form->button('Submit', ['type' => 'submit']); ?> 
<?php echo $this->Form->end() ?> 

После обратной связи,

Я добавил ниже внутри формы.

<?php echo $this->Form->input('resetToken', array('type'=> 'hidden','value'=>$this->request->pass[0])); ?> 
+0

Исправьте меня, если я ошибаюсь, но идентификатор токена передается 'GET', и, насколько я знаю, вы не можете передавать данные по одному и тому же запросу с помощью' GET' и 'POST'. Подумайте о добавлении скрытого поля в форму со значением идентификатора маркера. –

+0

Офир, я уже пробовал ваш метод. Но как только я нажму кнопку «Отправить». Он не получает $ this-> request-> data ['resetToken'], поскольку он зависит от $ this-> request-> pass [0] (параметр URL). Я действительно могу сделать то, что я упомянул выше, в CakePHP 2.0, но не в CakePHP 3.0. Так странно ... – DANLEE

ответ

5

Если для вас создан в файле шаблона зрения размещения на другой URL, вам нужно добавить маркер в URL форма действия:

$this->Form->create(null, ['url' => ['controller' => 'Users', 'action' => 'reset', $token]]); 

Если вы отправляете на тот же URL , нет необходимости указывать URL-адрес, так как он будет размещать в том же месте:

$this->Form->create(); 

при том, что вы сможете получить доступ к $token параметров в контроллере после POST.

+0

Это работает! Хосе Зап! Ты легенда! – DANLEE