OpenPNE標準ではwebappに書かれているが、 これをカスタマイズするとか新しくページを作る場合は拡張ディレクトリwebapp_extに 作るようにする。
webappとwebapp_extに同名のファイルがあった場合はwebapp_extが優先されて、webappのファイルは読まれない。
page | テンプレートを使用して、画面を表示するもの |
do | DB変更などの処理のみで、画面を表示しないもの |
doは正確には『はまちちゃん対策』がされる必要がある場合に使用する。
(POSTで入力を送って、DBを変更し、そこではページを表示せず、リダイレクトにより終了するページのこと)
つまりdoにはsessidを付けて送らないとエラーになる
画面を表示するもの | |
---|---|
実行ファイル | /webapp_ext/modules/【モジュール名】/page/【ファイル名】.php |
テンプレート | /webapp_ext/modules/【モジュール名】/template/【ファイル名】.tpl |
POSTにより値を送信するなら | /webapp_ext/modules/【モジュール名】/validate/page/【ファイル名】.ini |
画面を表示しないもの | |
---|---|
実行ファイル | /webapp_ext/modules/【モジュール名】/do/【ファイル名】.php |
POSTにより値を送信するなら | /webapp_ext/modules/【モジュール名】/validate/do/【ファイル名】.ini |
実行ファイル
基本
class 【モジュール名】_page_【アクション名】 extends OpenPNE_Action
{
function execute($requests)
{
………………
………………
return 'success';
}
}
ログインしていなくても見れるページ
function isSecure()
{
return false;
}
ヘッダメニューリンク
$inc_navi = fetch_inc_navi('h');
$this->set('inc_navi', $inc_navi);
このように書かないとリンクメニューは出ない。
h | 標準 |
c | コミュニティ |
f | フレンド |
テンプレート
テンプレートエンジンはSmarty
基本は$this->set('inc_navi', $inc_navi);こんな感じで実行ファイルから値を送る。
validate(バリデート)
[値名]
値条件
のように書く。
実行ファイル内で$requests['値名']として値が得られる。
このルールを無視して$_POSTなどを使用してはいけない。(Null Byte Attack)
値条件 | ||
---|---|---|
type | int | 整数 |
string | 文字列 | |
bool | bool型(1or0) | |
regexp | 正規表現 | |
required | 1 | 必須項目 |
required_error | 文言 | 必須項目がなかった場合のエラー文言 |
default | 値 | デフォルト値 |
caption | 文言 | キャプション |
is_array | 1 | 送られる値が配列のとき |
max | 値 | 最大値 |
min | 値 | 最小値 |
regexp | 値 | 正規表現 |
pre_filter | trim | トリムフィルタ |
ltrim | トリムフィルタ | |
rtrim | トリムフィルタ | |
ntrim | NULL バイト・制御文字(HT,LF,NBSP以外)をすべて削除 | |
mysqltext | 65535バイトに切り詰め | |
intval | 整数変換 (type=int)の場合は必ず実行される |
『sessid』、『msg』、『msg1』、『msg2』、『msg3』はデフォルトでstringに設定されている。
エラーメッセージ系 | /webapp/validate/msg.ini |
セッションID | /webapp/validate/sessid.ini |
必須項目などエラーを表示するページを指定する場合
function handleError($errors)
{
$_REQUEST['msg'] = array_shift($errors);
openpne_forward('pc', 'page', 'h_diary_add', $errors);
exit;
}
function handleError($errors)
{
$_REQUEST['msg1'] = $errors['subject'];
$_REQUEST['msg2'] = $errors['body'];
$_REQUEST['msg3'] = $errors['public_flag'];
openpne_forward('pc', 'page', 'h_diary_add', $errors);
exit;
}
メッセージは最大3つまで送ることができます。(というより3つまでしか送れません)
(管理画面用のものであれば配列になるので無制限)
ページ遷移制御
リダイレクト(読み直し)
openpne_redirect('pc', 'page_h_home', $params);
フォワード(読み直さず表示)
openpne_forward('pc', 'page', 'h_home', $errors);