CakePHP保存表单数据,然后通过另一个控制器方法将其传递给视图

CakePHP保存表单数据,然后通过另一个控制器方法将其传递给视图,cakephp,Cakephp,我有一个游戏模型,视图和控制器,还有一个新的游戏动作,它创造了一个新的游戏记录。那很好 然后,我想使该表单数据在会话中或作为传入数组(但不作为URL参数可见)提供给main_game_view.ctp。我不介意它是在会话中完成的,还是传入的,以更有效的为准 我试过各种不同的组合,设置这个,写那个,传递另一个,但到目前为止没有任何效果。这是我最近一次失败后的代码。GamesController新游戏操作: public function newgame() { if ($this->

我有一个游戏模型,视图和控制器,还有一个新的游戏动作,它创造了一个新的游戏记录。那很好

然后,我想使该表单数据在会话中或作为传入数组(但不作为URL参数可见)提供给main_game_view.ctp。我不介意它是在会话中完成的,还是传入的,以更有效的为准

我试过各种不同的组合,设置这个,写那个,传递另一个,但到目前为止没有任何效果。这是我最近一次失败后的代码。GamesController新游戏操作:

public function newgame() {
    if ($this->request->is('post')) {
        $this->Game->create();
        $this->Session->write('Game',$this->request->data);
        if ($this->Game->save($this->request->data)) {
            // Put the id of the game we just created into the session, into the id field of the Game array.

            $this->Session->write('Game.id',$this->Game->getLastInsertID());
            $this->redirect(array('action' => 'main_game_view'));
        } else {
          $this->Session->setFlash('There was a problem creating the game.');
        }
    }
}
将游戏id写入会话非常有效,我在阅读()时可以在main_game_视图中看到这一点。但无论我将请求数据的会话写入放在何处,我都无法在主视图中找到它

类似地,如果我尝试将任何内容传递到重定向中,我在main_game_view动作或main_game_view本身中都找不到它

目前,我的主要游戏视图操作只是一个空函数,但在尝试通过重定向传递数据后,我在其中找不到任何内容

以下是主要的_game_view.ctp:

<?php debug($this->viewVars); ?>

<p><?php echo 'Game id: ' . $this->Session->read('Game.id') ?></p>
<p><?php echo 'Game name: ' . $this->Session->read('Game.game_name') ?></p>

Game.id很好,但是Game.Game_name中没有任何内容(这是模型中的有效字段名。我所有传入变量的尝试也都失败了,调试行只显示了:array()


这看起来很简单,遵循CakePHP博客教程并对其进行修改以创建/编辑/删除游戏实例,但显然有些东西还没有完全融入其中…

你没有
game.game\u new
只需编写以下内容即可输入会话:
$This->session->write('game',$This->request->data)
显然,您必须在主游戏视图中执行以下操作:

<?php $game = $this->Session->read('Game'); ?>
<p><?php echo 'Game id: ' . $this->Session->read('Game.id') ?></p>
<p><?php echo 'Game name: ' . $game['Game']['game_name']; ?></p>


好的,谢谢,这“很明显”是可行的。)您是否介意演示如何执行相同的操作,但不使用会话,也不让传入的数组在URL上可见?(无论如何,我都会接受这个答案,谢谢)。在这种情况下,我认为没有比会话更好的方法了。。。您可以尝试将数据写入某种临时容器,如file、memcache等。。。但是我看不出有什么意义,因为你可以使用sessionOkay,这很好。我很高兴。那就到了。非常感谢。