3

我有一个游戏模型、视图和控制器,以及一个创建新游戏记录的新游戏动作。这很好用。

然后,我想在会话中或作为传入数组(但作为 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 博客教程并对其进行调整以创建/编辑/删除游戏实例,但显然有些东西还没有完全融入......

4

1 回答 1

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>
于 2012-10-17T13:15:38.987 回答