コントローラクラスに定義されたクラス変数名とリクエストパラメータ名が一致すると、自動的に変数に値がセットされます。
つまり、以下のフォームから送信された内容は
<form method="post" action="mailform.php"> <input type="hidden" name="action" value="confirm"/> 名前: <input type="text" name="name" value="" /><br /> メールアドレス: <input type="text" name="email" value="" /><<br /> タイトル: <input type="text" name="subject" value="" /><br /> 本文: <textarea name="message"></textarea><<br /> <input type="submit" value="送信" /> </form>
以下のようなコントローラで自動的に受け取ることができます。
class MailformController extends Controller
{
var $_gw_default_action = "input";
var $_gw_template_class = "/path/to/Smarty.class.php";
var $_gw_template_templates_dir = "/path/to/templates";
var $_gw_template_compile_dir = "/path/to/templates_c";
var $name = "";
var $email = "";
var $subject = "";
var $message = "";
// 入力フォームを表示するアクションメソッド
function executeInput()
{
}
// 入力フォームをサブミットすると呼び出されるアクションメソッド
function executeConfirm()
{
$this->name; // この時点でフォームに入力された名前が入っている
}
}
PHPではクラス変数名の大文字小文字が区別されないことに注意してください。また、変数名がアンダースコアで始まるクラス変数はリクエストパラメータの自動セット対象にはなりませんので、外部から値を設定されては困る変数がある場合は、変数名をアンダースコアで始めるようにしてください。
なお、「_gw_」で始まるクラス変数名($_gw_default_actionなど)は、Controllerクラスの内部で予約されていますので、使用しないでください。
自動セットが行われるクラス変数名の例
自動セットが行われないクラス変数名の例
注意: PHP 4.2.0以前の場合は、クラス変数を定義時に必ず初期化するようにしてください。