「SCRIPT_PATH」設定

2006/04/27 | mojavi2

mojaviの設定ファイルにSCRIPT_PATHをdefineする箇所がある。
デフォルトでは’/index.php’等と設定されていて、そのまま放置していても困ることはない。ただしある一つの関数を除いては・・・。
mojavi2の使用ガイドみたいなページは最近いくつか存在するけど、ほとんどこれに関する記述を見たことがない。しかし正しく設定しておいたほうが便利なのです。
ここはベースとなるindex.phpへのURLを正しく表記すべきところです。よってデフォルトでは以下のようになっているところを、
define(‘SCRIPT_PATH’,’/index.php’);
正しく、
define(‘SCRIPT_PATH’,’http://example.com/index.php’);
修正すべき。

この設定はcontrollerクラスの中のgenURL関数に絡む。mojaviでは一つのアクションから別のアクションに遷移するのに、3つの方法がある。
○action chain
○$controller->forward
○$controller->redirect
ここでどうしてもredirectで処理したい場合がある訳だが、そのときに引数で指定するのは「正しいURL」となる。ヘッダ関数で処理されるからだ。
例えば外部のURLにリダイレクトするのであればそのまま表記してしまえばよいが、内部でまわしたいときは、いちいちURLを環境に応じて書き換える必要があるわけ。そこで便利なのがgenURL関数。引数をQueryStringとしてURLを生成してくれるのだが、このgenURL関数がSCRIPT_PATHを使っているというわけ。
やっぱり正しく設定したほうがいいに越したことはないです。

認証モジュールIcUser

2006/04/24 | mojavi2

mojaviにもいろいろできる認証モジュールがあるのを見つけた。
IcUser
adodbを使う必要があったりといろいろと癖がありそうだが、調べてみる価値はありそう。

mojaviとMBfpdi

2006/04/17 | mojavi2

mojaviを使って、かつPDFで出力した場合が生じたときに問題が発生した。先日作ったMBfpdiで日本語を出力しようとしたのだがエラーでうまくいかない。「なぜだろう?」といろいろ思案した結果、MBfpdiで定義(や読み込み)された変数のスコープで不具合が出るような感じ。これを何とか修正した。せっかくだからpatchをつくって、ダウンロードできるようにしておいた。
パッチ

【続】initializeでfalseが返されたら

2006/04/09 | mojavi2

表題の件は前回の続編だが、予想通りでした。
mojavi-all-classes.phpのExecutionFilterクラスの中の以下の記述で

if ($action->initialize($controller, $request, $user))

else節を加えて「$controller->forward(ACTION,MODULE)」を書き足すことによって希望のモジュール/アクションに遷移させることができると判明。
ここでさらなる野望。
これまではデータベースへの接続をベースとなるアクションclassを作成し、そのinitialize関数の中でおこなってきたので、データベース接続が失敗したときのエラー表示を美しくしたかったのだけれど、少し欲求が増えた。ぜひともこれをFilterで実現したい。
つまりFilterでデータベースの初期化をおこない、初期化に失敗した場合に単にエラーメッセージを表示するだけでなく、カスタマイズされた画面中にエラーを表示させたい、ということ。
いろいろ調べたけれど今のところわからない。どうすれば実現できるのか、わかる人がいれば是非教えて欲しい。

Read the rest of this entry »

initializeでfalseが返されたら

2006/04/07 | mojavi2

mojaviでinitializeメソッドを使用して初期化することがよくある(例えばデータベースへの接続処理とか)。当然initializeに失敗した際のことも考えないといけないけれど、デフォルトではinitializeでfalseを返すと、画面には何も表示されない。当然エラーメッセージをechoした後falseを返したりするけれど、それでも所詮は味気ないメッセージが表示されるだけ。
やはりエラー画面でも多少デザインテイストを考えたいところ。これはmojavi-all-classes.phpで以下の部分を修正するとよさそうな感じ。

ExecutionFilterクラス内のexecute関数で、以下のように記述されている箇所に注目。
if ($action->initialize($controller, $request, $user))
{
 (中略・いろんな処理が書かれているところ)
}

ここで初期化処理をしているみたいなんだけど、if文のelseに相当するところがない。つまりtrueを返せば処理をするけどfalseを返すと「何にもしません」ということのように見える。きっとここでelse節を書き足せばいいはずだと思う。
まだ検証してないので確実なことはいえないけれど、あとで検証することにしようっと。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net