SOY App開発の解説 管理画面側でリンクを生成する
前回まででSOY Appの管理側、公開側のページの追加と表示までを見ていきました。
これからはデータのやりとりについてを説明していきます。
はじめに管理画面側での処理についてを記載します。
話を始める前に、モックのダウンロードを行ってください。
インストール手順は下記の記事を参考にしてください。
準備ができたら、解説に入ります。
まずは下記の手順に従い、Sampleページを作成します。
作成するファイルは下記の通り
/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">を追加します。