アクション内で行う処理

アクション内では通常のPHPのプログラムに加え、フレームワークの

モデル
データ処理を制御します。
フォーム
フォームに関するクライアントからの入力を制御します。
定数テーブル
定数テーブルを定義し、値を取得します。
ユーザ定義関数
ユーザ定義関数を定義し、呼び出します。
モジュール
フレームワークで用意されているその他の機能を提供します。

を呼び出して処理をすることが可能です。そのためには以下のメソッドを実行し、インスタンスを生成してから各クラス内のメソッドを実行します。各クラスの説明はユーザガイドの各項目を参照してください。

newModel(string $name)
指定したモデル名のモデルオブジェクトを返します。モデルの詳細はモデルを参照してください。
loadModel(string $name)
指定したモデル名のモデルオブジェクトを返し、(フレームワーク内部でメモリ上に)インスタンスを保持します。
unloadModel(string $name)
loadModel($name)で保持したインスタンスを破棄し(、メモリを解放し)ます。
newForm(string $name)
指定したフォーム名のフォームオブジェクトを返します。フォームの詳細はフォームを参照してください。
loadForm(string $name)
指定したフォーム名のフォームオブジェクトを返し、(フレームワーク内部でメモリ上に)インスタンスを保持します。
unloadForm(string $name)
loadForm($name)で保持したインスタンスを破棄し(、メモリを解放し)ます。
newTable(string $name)
指定した定数テーブル名の定数テーブルオブジェクトを返します。このオブジェクトからget()getValue()メソッドでテーブルの内容を取得できます。詳細は定数テーブルを参照してください。
loadTable(string $name)
指定した定数テーブル名の定数テーブルオブジェクトを返し、(フレームワーク内部でメモリ上に)インスタンスを保持します。
unloadTable(string $name)
loadTable($name)で保持したインスタンスを破棄し(、メモリを解放し)ます。
newFunc(string $name)
指定したユーザ関数クラス名のクラスオブジェクトを返します。関数の詳細はユーザ定義関数を参照してください。
loadFunc(string $name)
指定したユーザ関数クラス名のクラスオブジェクトを返し、(フレームワーク内部でメモリ上に)インスタンスを保持します。
unloadFunc(string $name)
loadFunc($name)で保持したインスタンスを破棄し(、メモリを解放し)ます。
newModule(string $name)
指定したモジュール名のモジュールオブジェクトを返します。モジュールの詳細はモジュールを参照してください。
loadModule(string $name)
指定したモジュール名のモジュールオブジェクトを返し、(フレームワーク内部でメモリ上に)インスタンスを保持します。
unloadModule(string $name)
loadModule($name)で保持したインスタンスを破棄し(、メモリを解放し)ます。
unloadAll()
loadによって保持されているインスタンスをすべて破棄し(、メモリを解放し)ます。
getApplicationName()
現在のアプリケーション名を文字列で返します。

セッション情報として値をセット、取得することもできます。セッション変数の詳細についてはセーブとロードを参照してください。

表示処理

アクションの中でビューに表示する変数を代入してビューを呼び出す処理です。詳細はビューも参照してください。

CZCtrl::addViewVar(string $var_name, mixed $value, bool $escape_flag = TRUE, array $ignore_escape_keys)
ビューの中で使う変数(ビュー変数)$var_name$valueの値を代入します。$valueにはスカラのみならず配列や連想配列も指定できます。 $escape_tags_flagがTRUEもしくは指定しない場合、$value中に含まれるHTMLタグ要素はエスケープ処理して表示可能な文字列に置換します。 $valueが連想配列の場合、$ignore_escape_keys$valueのキーを指定すると、そのキーに該当する値はエスケープ処理を行いません。たとえば
$shop_info = array(
	'id'			=> 1,
	'name'			=> 'Chimpanzee\nStore',
	'description'	=> 'Chimpanzeeの関連グッズを
売っています。', ); $this->addViewVar('shop_info', $shop_info, TRUE, array('description'));
とすることでビューで$shop_info
$shop_info['id']
1
$shop_info['name']
Chimpanzee
Store
$shop_info['description']
Chimpanzeeの関連グッズを
売っています。
と表示されます。 $escape_tags_flagがFALSEの場合タグ要素をそのままタグとして代入します。
CZCtrl::display(string $file)
指定したテンプレートファイルを適用して表示します。このメソッドを実行しない場合は
(app_root)/views/コントローラ名/(action_name).html
(app_root)/views/コントローラ名/グループ名/(action_name).html
のテンプレートファイルが適用されて表示されますが、このメソッドを実行した場合は
(app_root)/views/コントローラ名/$template_file
が適用されます。

通常メソッドdisplay()は実行する必要なく、アクションの最後にアクションと同じ名前のテンプレートファイル

(app_root)/views/コントローラ名/(action_name).html

を適用して表示する処理が実行されます。display()を実行するのは違うファイルを適用したい場合のみとなります。アクションの戻り値をfalseにする、すなわちアクションの最後で

return false;

とすることでビューを呼ばないことも可能です。たとえば

<?
class ctrlXxx extends CZCtrl {
	public function actionYyy() {
			:
		$recs = getList( ...
		$this->addViewVar('recs', $recs);
	} // 「(app_root)/views/xxx/yyy.html」を適用

	public function actionZzz() {
			:
		$rec = getValues( ...
		$this->addViewVar('rec', $rec);
		$this->display('test.tpl');
	} // 「(app_root)/views/xxx/test.tpl」を適用
		:

	public function actionWww() {
			:
		return false;
	} // ビューを適用しない
}
?>

のようになります。

ページ遷移処理

転送(フォワード)とリダイレクト、参照元アクションの取得などといったページ遷移に関する処理です。

転送(フォワード)

転送(フォワード)とは指定のアクションに移行する処理です。現在のアクションで処理を終えた後、所定のアクションに戻したり次の処理に移行したりする際などに使用します。CZCtrl::forward(array $action, array $params = NULL)で実行します。

CZCtrl::forward(array $action, array $params = NULL)
引数$actionで指定したアクションに処理を転送します。アクション形式の配列で、第1要素がアクション名、第2要素がコントローラ名となります。 コントローラ名にFALSEを指定した場合、現在のコントローラと同じコントローラのアクションに転送されます。
$action=array('confirm', FALSE)

引数$paramsでアクションに与えるパラメータを指定することができます。リクエストパラメータ形式の連想配列です。 たとえば
$this->forward(array('detail', 'gps'), array(
'routing' => array('box'),
'get' => array('id' => 2),
));
の場合、
http://mydomain.com/index.php/gps/detail/box?id=2
に転送する処理となります。

転送は通常、同一コントローラ内での移行に用いられることが多いです。

リクエストが無効な(アドレスが存在しない)場合など、404エラー画面へ転送するメソッドも用意しています。

CZCtrl::forward404()
404エラー画面に転送します。
CZCtrl::forward403()
403エラー画面に転送します。
CZCtrl::checkPrevActions(array $actions)
直前のアクションが指定したアクション以外の時に403エラーへ転送します。 引数の$actionsアクション形式の配列を複数並べた配列
$this->checkPrevActions(
	array('アクション名', 'コントローラ名'),
	array('search', 'item'),
	array('list', 'item'),
		:
);
となります。

checkPrevActions(array $actions)では特定のアクションを直前のアクションとして指定して遷移を限定します。それに対して遷移元が不特定多数ですが、ブラウザバックの連打等による不正なアクセスを拒否する必要がある場合があります(更新や追加処理において)。以下はそのような場合に使用するメソッドです。

CZCtrl::beginProcess($process_name = NULL)
一連の処理を開始します。_init()のような初期化時に実行することが普通です。通常プロセスの名前はフレームワーク内で自動的に定められますが、$process_nameで識別子を指定することもできます。
CZCtrl::checkProcess($process_name = NULL)
不正なアクセス(ブラウザバックにより登録フォームページに戻ってきてしまった場合など)かどうかをチェックし、不正であれば403エラーへ転送します。登録フォームの画面等で実行します。
CZCtrl::endProcess()
beginProcess($process_name = NULL)のインスタンスを開放します。すなわちこれを実行すると元のページには戻れなくなります。これを実行しないとブラウザバックの連打で元のページ(登録フォーム等)にアクセスができてしまうため、アクセスを制御する意味がなくなります。一連の処理が終了したら(commit時)必ず実行するようにしてください。

リダイレクト

指定したコントローラのアクション名にリダイレクトする処理です。サイト内リダイレクトに使用します。

CZCtrl::redirect(array $action, bool $secure_flag = FALSE, array $params = NULL)
引数$actionで指定したアクションにリダイレクトします。アクション形式の配列で、第1要素がアクション名、第2要素がコントローラ名となります。 コントローラ名にFALSEを指定した場合、現在のコントローラと同じコントローラのアクションにリダイレクトします。
$secure_flagでリダイレクト先を「https://」にするか「http://」にするかを指定できます。TRUEにすると「https://」で始まるセキュアなURLにリダイレクトします。
引数$paramsでアクションに与えるパラメータを指定することができます。リクエストパラメータ形式の連想配列です。
CZCtrl::redirectRoot(bool $secure_flag = FALSE, array $params = NULL)
デフォルトコントローラのデフォルトアクションにリダイレクトします。
$secure_flagでリダイレクト先を「https://」にするか「http://」にするかを指定できます。TRUEにすると「https://」で始まるセキュアなURLにリダイレクトします。
引数$paramsでアクションに与えるパラメータを指定することができます。リクエストパラメータ形式の連想配列です。
redirectReturn(array $default_action = NULL, bool $secure_flag = NULL, array $params = NULL)
直前のアクションにリダイレクトします。
直前のアクションがない場合、すなわち直接アプリケーション外からアクセスして来た場合にリダイレクトする先のアクションを$default_actionで指定します。アクション形式の配列で、第1要素がアクション名、第2要素がコントローラ名となります。 直接アプリケーション外からアクセスした時、$default_actionが指定されていなければFALSEが返る(エラーになる)ので、これを実行するときには基本的に設定する必要があります。
$secure_flagでリダイレクト先を「https://」にするか「http://」にするかを指定できます。TRUEにすると「https://」で始まるセキュアなURLにリダイレクトします。
リダイレクトする際、直前のページのURLに付いていたリクエスト文字列もそのまま付けますが、引数$paramsでアクションに与えるパラメータを指定することができます。リクエストパラメータ形式の連想配列です。
この機能を利用する場合、戻り先のURLを常にセッション情報として保存しておく必要があるため、その分メモリを消費します。 設定ファイル{(app_root), _common}/configs/Forward.phpの「戻る」設定return_flagをFALSEにすることこの機能を無効化し、メモリを節約することができます。ホームページ(デフォルトコントローラ)へ遷移すると、戻り先URLのセッションデータは削除され、この機能は使えなくなります。ただし
http://mydomain.com/home
などのようにコントローラ名がURLにある場合は削除されません。

内部リダイレクトはデータ更新時など再読み込みを認めたくない場合に使用します。

指定のURLにリダイレクトする処理です。

CZCtrl::redirect301(string $url)
$urlで指定したURLに301リダイレクトします。
CZCtrl::redirect302(string $url)
$urlで指定したURLに302リダイレクトします。

参照元のコントローラ/アクション名

現在のコントローラやアクションに移る直前のコントローラ名やアクション名を返すメソッドです。

CZCtrl::getCtrlName()
現在のコントローラ名を文字列で返します。
CZCtrl::getActionGroupName()
現在のアクショングループ名を文字列で返します。
CZCtrl::getActionName()
直前のアクション名を文字列で返します。
CZCtrl::getPrevCtrlName()
現在のコントローラに移る直前のコントローラ名を文字列で返します。遷移元のコントローラがない場合(最初のコントローラや直接入力)、NULLを返します。
CZCtrl::getPrevActionGroupName()
現在のアクショングループに移る直前のアクショングループ名を文字列で返します。遷移元のアクショングループがない場合、NULLを返します。
CZCtrl::getPrevActionName()
直前のアクションに移る直前のアクション名(リファラ)を文字列で返します。遷移元のアクションがない場合(最初のアクションや直接入力)、NULLを返します。

前後のページ

ページトップへ