Мастер форм теряет мои данные

#forms #cakephp #wizard

#формы #cakephp #мастер

Вопрос:

Здравствуйте и спасибо за ваше время! При попытке реализовать мастер форм я столкнулся с парой проблем. Использование xdebug показало, что все отправленные данные потеряны, что означает:
$this-> data, $ _POST и $ params[‘data’] / [‘form’] все пусты. Кажется, что cake выполняет какое-то перенаправление / отправку, и действия вызываются дважды. Когда я устанавливаю точку останова в методе beforeFilter (), я могу видеть, что все данные заполнены правильно. В других обсуждениях было несколько предположений, что это может быть вызвано недопустимыми ссылками в макете, но использование пустого макета ничего не изменило. Я также удалил компонент аутентификации, обработчик запросов, помощников, чтобы посмотреть, происходит ли что-то … ничего. Проблема в том, что я совсем новичок в Cake и больше не имею идей, где искать. В настоящее время я получаю это предупреждение:

 Warning (512): Step validation: daten is not a valid step. [ROOT/plugins/wizard/controllers/components/wizard.php, line 271]
Code | Context

return $this->controller->autoRender ? $this->controller->render($this->_currentStep) : true;
} else {
trigger_error(sprintf(__('Step validation: %s is not a valid step.', true), $step), E_USER_WARNING);

$step   =   "daten"

WizardComponent::process() - ROOT/plugins/wizard/controllers/components/wizard.php, line 271
SignupsController::wizard() - ROOT/plugins/bookings/controllers/signups_controller.php, line 18
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 204
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - ROOT/webroot/index.php, line 83
  

Не думаю, что это сильно помогает, потому что массив $ step также потерян.
Любая идея высоко ценится! 🙂

Ответ №1:

Проблема в том, что срок действия сеанса истек, и теряется информация, с помощью которой система продолжает отслеживать прогресс и данные. Установите продолжительность сеанса в настройках безопасности в конфигурации ядра. Однако это все еще не останавливает ошибку. Исправлено, что замена:

 trigger_error(sprintf(__('Step validation: %s is not a valid step.', true), $step), E_USER_WARNING);
  

Для:

 $this->reset();
  

Это отправит пользователя обратно к первой части мастера форм. Вы потеряете все пользовательские данные, но это произошло по истечении срока действия сеанса в первую очередь, или если кто-то попытается перейти к форме, к которой еще не был получен доступ с помощью формы, она также будет сброшена. Это может быть хорошей мерой безопасности или просто раздражающей.

В любом случае, это мое решение, могли бы быть лучшие.

Комментарии:

1. Спасибо за ваш ответ, Брюс! Поскольку я не мог понять, как решить проблему самостоятельно, я решил написать свой собственный помощник по форме, но, надеюсь, это поможет кому-то еще.