SOY CMS / SOY Shop

ブログトップ

SOY App開発の説明 SOY2DAOでデータベースを利用する3

2014年02月05日

前回まででDAO関連のファイルを用意したので、

今回からは実行の仕方を記載します。

SOY App開発の説明 SOY2DAOでデータベースを利用する2




データベースを利用するために下記をダウンロードしてください。

soymock_0.0.3.zip


今回は、

/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関数内で行います。

詳しくは下記の記事をご覧ください。

SOY App開発の解説 管理画面のHOMEを作成する


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");

で詳細ページへ遷移させます。