セッションの使い方

ひさびさの更新です。
ようやく余裕がでてきました。

さて、一通りフォームを完成させることは、できるようになりました。
次にセッションの使い方です。

$_SESSIONに書き込めばいいじゃん、って意見もありますが。。。
Mapleの機能にありますので、ご紹介いたします。

まずは、アクションを2つ作ります。もちろんmapleコマンドで。

$ maple action test_session_input smarty test_session_input session_input
$ maple action test_session_display smarty test_session_display session_display

test_session_input と test_session_display の2つのアクションが完成しました。

最初のtest_session_inputで、セッション変数に値をセットして、
test_session_displayで、セッション変数より受け取り表示します。

maple.iniの設定

  • modules/test/session/input/maple.ini を編集します。
[Session]
mode = start

[Action]
session = "ref:Session"

[View]
success = "test/session/input.html"
  • modules/test/session/display/maple.ini を編集します。
[Session]
mode = start

[Action]
session = "ref:Session"

[View]
success = "test/session/display.html"

Sessionフィルターを追加して、セッションを扱えるようにします。
Actionフィルターを使って、アクション内でセッションオブジェクトを参照出来るようにしています。

Actionの設定

  • module/test/session/input/Input.php を編集します。
<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * [[機能説明]]
 *
 * @package     [[package名]]
 * @author      Your Name <mail@example.com>
 * @access      public
 */
class Session_Input
{
    var $session;
    
    /**
     * [[機能説明]]
     *
     * @access  public
     */
    function execute()
    {
        // セッション変数へ値を設定する
        $this->session->setParameter('name', 'test');
        
        return 'success';
    }
}

セッションに値をセットする場合は、setParameter(名前, 値)としてセットします。

  • module/test/session/display/Display.php を編集します。
<?php

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * [[機能説明]]
 *
 * @package     [[package名]]
 * @author      Your Name <mail@example.com>
 * @access      public
 */
class Session_Display
{
    var $session;
    var $name;
    
    /**
     * [[機能説明]]
     *
     * @access  public
     */
    function execute()
    {
        return 'success';
    }
    
    function getName()
    {
        return $this->session->getParameter('name');
    }
}

セッションより値を取り出す場合は、getParameter(名前)で取り出すことができます。

テンプレートの設定

  • templates/session/input.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Hello, Maple!</title>
</head>
<body>
<h1>Hello, Maple!</h1>
<a href="session_display.php">セッション表示画面へ</a>
</body>
</html>
  • templates/session/display.html
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=EUC-JP">
<title>Hello, Maple!</title>
</head>
<body>
<h1>Hello, Maple!</h1>
Name:{$action.name}
</body>
</html>

さて、ここまでで準備ができました。
http://hogehoge/session/input.phpにアクセスして、セッション変数をセットし、
セッション表示画面へと移動して、セッション変数が受け取れているかを確認してみてください。