ブログトップ
SOY App開発の説明 SOY2DAOでデータベースを利用する3
2014年02月05日
前回まででDAO関連のファイルを用意したので、
今回からは実行の仕方を記載します。
SOY App開発の説明 SOY2DAOでデータベースを利用する2
データベースを利用するために下記をダウンロードしてください。
今回は、
/CMSインストールディレクトリ/app/webapp/mock/pages/Sample/RegisterPage.html
/CMSインストールディレクトリ/app/webapp/mock/pages/Sample/RegisterPage.class.php
(URLはhttp://ドメイン/インストールディレクトリ/app/index.php/mock/Page/Registerになります。)
上記のファイルで登録画面を作成します。

RegisterPage.html
<div>
<form soy:id="form">
<dl>
<dt>名前</dt>
<dd><input type="text" soy:id="name"></dd>
<dt>説明</dt>
<dd><textarea soy:id="description"></textarea></dd>
</dl>
<p>
<input type="submit" value="register">
</p>
</form>
</div>
RegisterPage.class.php
<?php
class RegisterPage extends WebPage{
function RegisterPage(){
WebPage::WebPage();
$this->createAdd("form", "HTMLForm");
$this->createAdd("name", "HTMLInput", array(
"name" => "Sample[name]",
"value" => ""
));
$this->createAdd("description", "HTMLTextArea", array(
"name" => "Sample[description]",
"value" => ""
));
}
}
?>
上記のコードに関する詳しい説明は下記の記事をご覧ください。
SOY App開発の解説 SOY2HTMLでフォームを設置する
フォームができたら、次はPOSTの処理を書きます。
POSTの処理はdoPost関数内で行います。
詳しくは下記の記事をご覧ください。
function doPost(){
if(soy2_check_token()){
//DAOクラスを読み込む
$dao = SOY2DAOFactory::create("sample.SOYMock_SampleDAO");
//入力した値を配列として取得
$sample = $_POST["Sample"];
//DAOでデータベースに放り込むようにオブジェクトに変更
$obj = SOY2::cast("SOYMock_Sample", (object)$sample);
try{
$id = $dao->insert($obj);
}catch(Exception $e){
//
$id = null;
}
//作成できたら、詳細ページへ遷移する
CMSApplication::jump("Page.Detail." . $id . "?updated");
}
}
上から
$dao = SOY2DAOFactory::create("sample.SOYMock_SampleDAO");で
前回作成したDAOクラスファイルを読み込みます。
SOY App開発の説明 SOY2DAOでデータベースを利用する2
引数の指定は、/mock/src/domain/以下からドット区切りでファイルのパスを指定します。
指定の際は.class.phpは省略します。
DAOクラスファイルを読み込む際に、ファイル内の@entityに記載されたクラスも同時に読み込みます。
今回はSOYMock_Sample.class.phpでしたね。
POSTで送られてきたデータは配列なので、
SOY2::cast関数でオブジェクト型に変換します。
cast関数の引数にはあらかじめ読み込んだクラスのクラス名と、
オブジェクト型にした配列を入れます。
オブジェクトができたら、
SOYMock_SampleDAO.class.phpで用意したinsert関数でデータベースにINSERTします。
insert関数はidを返り値に持つので、
idを取得して、
CMSApplication::jump("Page.Detail." . $id . "?updated");
で詳細ページへ遷移させます。

