twitter sns クチコミ comments neta

2007/09/27 19:16:26

ログインできるようにする

rhaco修行シリーズ!

ごめんなさい!作業するの忘れてました><!!

前回の続き


goesbyのソースを読んでみたら、login.phpで直にRequestLogin::loginをしてることがわかったので、今回はその方法にしてみた。


rhaco開発のコツ


というか、こうしたほうがわかりやすいんじゃないかな!ってので、
セットアップの時に表示ログのログレベルをデバッグか、ディープデバッグにする。
こうすると、ブラウザから見るときに常に一番下にログが出力されるので、バグを見つけやすい。
発行されているSQLなんかも見れるしね!自分はDeep_Debugにしてみてます。


ログイン画面の実装


まずは、ログイン処理をするエントリポイント?を作りました。
といっても、書いたコードはほとんどありませんでした。
先頭のRhaco::importに重複がありそうだけど、別に問題なさそうなのでほっとくことにします。(試行錯誤の結果ですw)
rhacosns/login.phpをこうしてみました
<?php
require_once '__init__.php';
Rhaco::import('exception.ExceptionTrigger');
Rhaco::import('network.http.RequestLogin');
Rhaco::import('network.http.Request');
Rhaco::import('network.http.Header');
Rhaco::import('model.LoginException');
Rhaco::import('tag.HtmlParser');
Rhaco::import('LoginCondition');

$request 	= new Request();
$template	= new HtmlParser();

if(RequestLogin::isLogin()){
	Header::redirect(Rhaco::url());
}

if($request->isPost()){
    if(RequestLogin::login(new LoginCondition(), $request)){
        Header::redirect(Rhaco::url());
    } else {
        ExceptionTrigger::raise(new LoginException());
    }
}

$template->write(Rhaco::constant("TEMPLATE") . '/login.html');

っとここで今まで何も書いてない部分にぶち当たりましたね。
LoginExceptionなんて用意してませんでした。
ということで、library/model/LoginException.phpを作成します
<?php
Rhaco::import('exception.model.ExceptionBase');
Rhaco::import('resources.Message');

class LoginException extends ExceptionBase{
	function LoginException($properties=array()){
		$this->message = "Login Failed! Try Again.";
		
		parent::ExceptionBase($properties);
	}
}

goesbyでは、国際化の処理が入ってたんですけど、まだ使い方がわからないので、とりあえず生のメッセージを入れましたw


長くなってきたので、続きは次の記事に…!

  • Add Comment

    name:

    comment:

    question:
    1 + 1 = ?
    answer: