我有一个游戏模型,视图和控制器,以及一个创建新游戏记录的新游戏动作。这很好。
然后,我希望在会话中将该表单数据提供给main_game_view.ctp,或者作为传入数组(但不作为URL参数显示)。我不介意它是在会议上完成的,还是传入的,以更高效率为准。
我尝试了各种不同的组合设置,写下,传递另一个,但到目前为止没有任何工作。这是我最近失败后的代码。 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_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博客教程并对其进行修改以创建/编辑/删除游戏实例,但显然有些东西还没有沉淀......
答案 0 :(得分:2)
你在会话中没有Game.game_new
密钥,只需写下:$this->Session->write('Game',$this->request->data);
显然你必须在main_game_view中做这样的事情:
<?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>