我有一个游戏模型、视图和控制器,以及一个创建新游戏记录的新游戏动作。这很好用。
然后,我想在会话中或作为传入数组(但作为 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 写入会话非常有效,当我 read() 时,我可以在 main_game_view 中看到它。但是无论我将请求数据的会话写入放在哪里,我都无法在 main_game_view 中找到它。
同样,如果我尝试将任何内容传递到重定向中,我无法在 main_game_view 操作或main_game_view 视图本身中找到它。
目前我的 main_game_view 操作只是一个空函数,但在尝试通过重定向传递数据后我找不到任何东西。
这是 main_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 博客教程并对其进行调整以创建/编辑/删除游戏实例,但显然有些东西还没有完全融入......