ブログトップ
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");
で詳細ページへ遷移させます。