SOY App開発の説明 管理画面でデータを削除する
データベースを利用するために下記をダウンロードしてください。

データを削除するために、
各データに削除ボタンを設置します。
設置は以前、IndexPage.class.phpに作成したSampleListに追加します。
SOY App開発の説明 管理画面側に一覧ページを作成する。
class SampleList extends HTMLList{
protected function populateItem($entity){
$this->createAdd("name", "HTMLLabel", array(
"text" => $entity->getName()
));
$this->createAdd("description", "HTMLLabel", array(
"html" => nl2br($entity->getDescription())
));
$link = SOY2PageController::createLink(APPLICATION_ID . ".Page.Detail." . $entity->getId());
$this->createAdd("detail_link", "HTMLLink", array(
"link" => $link
));
$removeLink = SOY2PageController::createLink(APPLICATION_ID . ".Page.Remove." . $entity->getId());
$this->createAdd("remove_link", "HTMLActionLink", array(
"link" => $removeLink,
"onclick" => "return confirm('削除してもよろしいですか?');"
));
}
}
フォーム作成の際に同じページからのPOSTであるか?を確認するために、
$this->createAdd("form", "HTMLForm");で常にトークンを発行するようにしましたが、
一つ前のページからリンクを確実に踏んできたか?を確認するために
リンクの場合はHTMLActionLinkを使用して、
URLの末尾にトークンをつけるようにします。
http://ドメイン/main/app/index.php/mock/Page/Remove/3?soy2_token={トークン}
次に削除を行うページの作成ですが、
PHPファイルのみ用意します。
今回の削除用のページは下記のファイルに用意します。
/CMSインストールディレクトリ/app/webapp/mock/pages/Page/RemovePage.class.php
RemovePage.class.php
<?php
class RemovePage extends WebPage{
function RemovePage($args){
$id = (isset($args[0])) ? $args[0] : null;
/**
* HTMLを持たずに処理だけのページの場合はWebPage::WebPage();を書かない
*/
$dao = SOY2DAOFactory::create("Sample.SOYMock_SampleDAO");
try{
$dao->deleteById($id);
}catch(Exception $e){
//
}
CMSApplication::jump("Page?success");
}
}
?>
今までのページと異なる点は、
処理のみのページでHTMLファイルを持たないので、
WebPage::WebPage();の記述が必要ありません。
POSTではないので、
処理はRemovePage関数内で行います。
初めにHTMLActionLinkで遷移しているので、
soy2_check_tokenで前ページで付与したトークンを確認します。
あとは、
$dao = SOY2DAOFactory::create("Sample.SOYMock_SampleDAO");
$dao->deleteById($id);
DAOクラスを呼び出して削除を行えば終了です。
2014.02.10 | Comments(0) | Trackback(0)
トラックバック -