Если я правильно понимаю, у вас нет уникального идентификатора в базе данных для каждой формы. В этом случае вам нужен способ их идентификации. Здесь я собираюсь использовать простой массив имен файлов представлений, но вам, вероятно, лучше создать таблицу вопросов, в которой в качестве поля будет указано имя представления, и связать представленные ответы на вопрос.
// always make sure that the current view gets passed as a parameter
echo $form->create('Question', array('url'=>array('action'=>'next', $currentView));
...
echo $form->submit('Next');
в вашем контроллере:
var $questionViews = array('q1', 'q2', 'q3'); // filenames of the views
function next($view = null) {
if(isset($this->data)) {
// save answers to database, session, etc
if(/*save successful*/) {
// redirect to the same action, which will load a new view because
// no form data was passed
$this->redirect(array('action'=>'next'));
exit();
}
}
$toRender = null; // view to be rendered
if($view && in_array($view, $this->questionViews)) {
// render the explicitly passed view
$toRender = $view;
} else {
// grab a random view
$toRender = $this->questionViews[array_rand($this->questionViews)];
}
$this->set('currentView', $toRender); // used by form action
$this->render($toRender); // explicit call to render stops the default view from being rendered
}