SOY CMS / SOY Shop

ブログトップ

SOY App開発の解説 管理画面側でリンクを生成する

2014年01月31日

前回まででSOY Appの管理側、公開側のページの追加と表示までを見ていきました。

これからはデータのやりとりについてを説明していきます。

SOY App開発の解説 公開側の表示2


はじめに管理画面側での処理についてを記載します。




話を始める前に、モックのダウンロードを行ってください。

soymock_0.0.1.zip


インストール手順は下記の記事を参考にしてください。

SOY App開発の解説 インストールとファイル構造


準備ができたら、解説に入ります。


まずは下記の手順に従い、Sampleページを作成します。

SOY App開発の解説 管理画面の他のページを作成する


作成するファイルは下記の通り

/CMSのインストールディレクトリ/app/webapp/mock/Sample/IndexPage.html

/CMSのインストールディレクトリ/app/webapp/mock/Sample/IndexPage.class.php

/CMSのインストールディレクトリ/app/webapp/mock/Sample/DetailPage.html

/CMSのインストールディレクトリ/app/webapp/mock/Sample/DetailPage.class.php


Sampleページができたら、

IndexPageからDetailページへのリンクを張ります。


リンクの張り方は大きく分けて三種類で、

・パスを直接記述

・HTMLファイル側でsoy:link

・PHPファイル側でSOY2HTMLのHTMLLinkを用い、専用のsoy:idを作成する

となります。


パスの直接記述ですが、

実際にリンクを生成するときは、

<a href="/CMSインストールディレクトリ/index.php/mock/Sample/Detail">リンク</a>

と記載すれば良いのですが、

CMSインストールディレクトリはどのようになるか?わかりません。


そこでインストールディレクトリがどのようになっても良いように、

SOY Appのタグを用いてパスを作成していきます。


そこで利用するのが残り二つで、

はじめにHTMLファイル側でのsoy:linkですが、


<a soy:link="mock.Sample.Detail">リンク</a>のように、

index.php以降のパスをドット区切り且つ、***Page.htmlのPage.htmlを除いたパスでつなげる。


IndexPage.htmlを読み込んだ時には、

<a href="/****/index.php/mock/Sample/Detail">と出力されます。


三番目のHTMLLinkですが、

PHPファイル側のIndexPage関数で下記のコードを追加します。


function IndexPage(){

	WebPage::WebPage();

	$this->createAdd("detail_link", "HTMLLink", array(
		"link" => SOY2PageController::createLink(APPLICATION_ID . ".Sample.Detail")
	));
}

第二引数のHTMLLinkはAタグに挿入できるsoy:idを作成し、

第三引数に入れる配列の中のlinkに入れた値がhrefの値となって出力されるので、

SampleのDetailへのパスを入れます。


上記に挙がっているパスの直接記述と同様、

CMSのインストールディレクトリはどうなるかわかりませんので、

SOY2PageControllerクラスのcreateLink関数を利用してパスを出力します。


createLinkはsoy:link同様、パスのindex.php以下を出力し、

APPLICATION_ID . "Sample.Detail"のようにドットでつなぎます。


これでsoy:id="detail_link"が使えるようになりましたので、

対となるIndexPage.htmlに<a soy:id="detail_link">を追加します。