#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. Спасибо за ваш ответ, Брюс! Поскольку я не мог понять, как решить проблему самостоятельно, я решил написать свой собственный помощник по форме, но, надеюсь, это поможет кому-то еще.