ラベル Cakephp関連 の投稿を表示しています。 すべての投稿を表示
ラベル Cakephp関連 の投稿を表示しています。 すべての投稿を表示

2012年1月30日月曜日

【CakePHP関連】cakephp1.2のエラーハンドリング方法について

お疲れ様です。

タイトルの件で備忘録します。

基本的にcakephpでのエラーハンドリングはcakeErrorというメソッドを利用します。
今回は404エラーを例にご紹介したいと思います。

実装手順は以下の通りになります。

1.appフォルダ直下にapp_error.phpというファイルを作成。

中身はこんな感じです。


class AppError extends ErrorHandler {

}

?>

AppErrorクラスのアクションメソッドにカスタマイズしたいエラーを記述していきます。


2.エラー表示用のアクションメソッドを記述。


class AppError extends ErrorHandler {

function error404($params) {

$this->controller->layout = LAYOUT; //使用レイアウト設定
$this->controller->pageTitle = PAGE_TITLE; //ページタイトル設定
parent::error404(); //継承元のerror404メソッドを読み込み

}

}

?>

404エラーアクションメソッドを作成します。
上記例では、使用レイアウトとページタイトルを設定し
親クラスのメソッドを読み込んでいます。


3.作成したエラーアクションメソッドのctpファイルを作成
app/views/errorsフォルダにアクションメソッド名のctpファイルを作成します。


以上で404エラーをオリジナルで作成することができます。

以上

2012年1月19日木曜日

【CakePHP関連】beforeFilter()について

お疲れ様です。

タイトルの件で備忘録します。

beforeFilter()の役割をはっきりしたかったので
改めて調査しました。

まずbeforeFilter()の利点を簡単にいうと

コントローラー内の共通の機能をまとめられる

という点です。

beforeFilter()を設定しておけば、コントローラー内の各アクションが
読み込まれる前に、beforeFilter()が読み込まれます。
いちいち各アクションに共通のコードを書く必要がなくなります。

しかし注意点があります。
たとえばスーパークラスのAppControllerにbeforeFilter()を記述したうえで
継承ControllerにもbeforeFilter()をコーティングすると
AppControllerのbeforeFilter()は読み込まれません。
スーパークラスのbeforeFilter()も読み込ませるようにするためには

parent::beforeFilter();

をコーティングします。

以上

2012年1月17日火曜日

2012年1月16日月曜日

【CakePHP関連】ユニークなIDを生成する方法

お疲れ様です。

タイトルの件で備忘録します。

Cakephp1.2においてのユニークなIDは

$uuid = String::uuid();

という記述で生成されます。

生成されるIDは「4f12ece4-e2b0-451e-ae27-4ee23b6a1be2」という
感じになります。

この実装は、下記のRFCに準拠しています。

http://www.ietf.org/rfc/rfc4122.txt

以上


2011年7月22日金曜日

【CakePHP関連】hashPasswords関数について

お疲れ様です。

ユーザーのパスワード変更で
自前でパスワードを暗号化する処理を実装する際にはまったので備忘録します。

authコンポーネントを利用している場合は
$this->Auth->hashPasswords($data); という具合で暗号化しますが

hashPasswordsはユーザー名とパスワードの両方が必要です。
パスワードだけだと、ハッシュ値を生成してくれません。

上記の例で言うと$dataには

$data['User']['username'] = 'username';
$data['User']['password'] = 'password';

という風に両方設定します。

参考サイト:

以上

2011年6月10日金曜日

【CakePHP関連】セッションタイムアウトについて

お疲れ様です。

タイトルの件で、何度も調べるので備忘録します。

タイムアウトは
core.phpで設定します。

Configure::write('Session.timeout', '120');

上記の感じで、単位は秒です。

しかし、これだけではありません。
実はセキュリティレベルも絡んできます。

関連図は

・セキュリティレベルがhigh
 タイムアウト設定値 × 10

・セキュリティレベルがmedium
 タイムアウト設定値 × 100

・セキュリティレベルがlow
 タイムアウト設定値 × 300

となります。

なので、例でいくと

high:120×10=1200秒(20分)
medium:120×100=12000秒(200分)
low:120×300=36000秒(600分)

となります。

以上

2011年6月9日木曜日

【CakePHP関連】コンポーネント内でコントローラーの関数を利用する方法

お疲れ様です。

タイトルの件で調査しましたので、備忘録します。


方法は下記のとおりです。

1.initialize() メソッドを実行して $controller を呼び出す

2.インスタンスされた$controllerから各メソッド利用

例)

function initialize(&$controller) {
$this->controller =& $controller; //インスタンス生成
}

function login($value)
{
$this->controller->redirect('success'); //メソッド利用
}

コントローラーをインスタンスして利用するってことです。

以上

2011年5月31日火曜日

【CakePHP関連】Javascriptコーディングの際、要素名をどのように書くか

お疲れ様です。

タイトルの件で備忘録します。

Cakeでフォームを作成すると
nameには配列っぽい名前が指定されます。

例)

2011年5月19日木曜日

【CakePHP関連】ラジオボタン出力ヘルパーについて

お疲れ様です。

何回も調べなおすので、備忘録します。

以下のとおりになります。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'));?>

上記記述だと、勝手にlegendがつきます。
なので、第3引数にarray('legend'=>false)を追加すると消えます。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false));?>

さらにセパレートもつけれます。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false,'separator'=>'★'));?>

以上

2011年5月12日木曜日

【CakePHP関連】フラッシュメッセージ出力について

お疲れ様です。

最近知ったので備忘録します。

よくコントローラーで

$this->Session->setFlash("登録しました。");

などと行うと、ビュー側にメッセージを表示することができます。
これはデフォルトのレイアウトを使用していると、固定した位置
(つまり、Cakephpのデフォルトレイアウトに設定されている位置)に
表示されます。

このメッセージをビュー側のctpファイルで
任意の場所に表示するコードが

<?php $session->flash(); ?>

です。

以上

2011年5月1日日曜日

【CakePHP関連】キャッシュを行わない

お疲れ様です。

キャッシュについて備忘録します。

コントローラーからキャッシュをせず
毎回処理を通す方法です。
表示したいアクションの中で


Configure::write('Cache.check',false);

と書きます。

以上

2011年4月19日火曜日

【CakePHP関連】hiddenメソッドについて

何回も調べなおすので備忘録します。

Formヘルパーのhiddenメソッドについて。

$form->hidden('User.id',array('value'=>3));

こんな感じで使います。

以上

【CakePHP関連】PHPExcelのセル関数絡み

お疲れ様です。

PHPExcelのセルに値をセットする関数で
いい情報が載っていたので
備忘録します。


// セルに値をセットする
$sheet->setCellValueByColumnAndRow(0, 1, "文字列!");
$sheet->setCellValueByColumnAndRow(1, 2, 12345);
$sheet->setCellValueByColumnAndRow(2, 3, true);
$sheet->setCellValueByColumnAndRow(3, 4, date("Y/m/d"));

参考サイト:
誰かのホームページ様
http://www.24w.jp/study_contents.php?bid=php&iid=phpexcel&sid=cell&cid=005

ありがとうございます

以上

2010年11月1日月曜日

【CakePHP関連】メール送信のQdmalをヘルパーで利用するには

お疲れ様です。
CakePHPでメール送信のQdmalをヘルパーで利用する機会があったので
備忘録します。

その前に、「Qdmail」について
CakePHPでメール送信には、EmailComponentsなるものがあるようですが、
日本語だと文字化けを起こすようで、あまり使えないとのこと。
そこで登場するのが、「Qdmail」という非常に有益なメールクラスライブラリです。

このQdmailは通常のライブラリの一種ですが、
Cakephpのコンポーネントとしても利用が可能です。
また、外部SMTPにも対応しているようです。

PHP高機能日本語メール送信ライブラリ・文字化けフリー
Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte
公式サイトhttp://hal456.net/qdmail/

それでは、CakePHPのヘルパーで利用する方法を紹介します。

コントローラー内で利用する方法
①まずは以下のディレクトリにQdmailファイルをアップロード
app/controllers/components/

②ヘルパー内でインスタンス化
App::import('Component','Qdmail');
$Qdmail = new QdmailComponent();

③各種設定
$Qdmail->to( 'address@example.com' , '日本語名' );
$Qdmail->subject('Qdmail on CakePHP メールのテスト');
$Qdmail->from('from@example.com' , '配信元日本語名' );
$Qdmail -> text( '本文をここにかきます' );
$Qdmail -> send();

以上です。

2010年9月26日日曜日

【CakePHP関連】CakePHPで携帯サイトを作る際の参考サイト

お疲れ様です。
Cakeで携帯サイトを作成する際の情報を検索していたら
いい参考サイトが見つかったので備忘録します。

sandmanの旅行の写真”とか”様
CakePHP その20 〜1.2RC2でPC&携帯対応サイトを考えた 〜 [CakePHP]
http://sand-man.blog.so-net.ne.jp/2008-09-11

参考になりますので
ぜひご覧くださいませ。

以上

2010年8月21日土曜日

【CakePHP関連】findメソッドの条件としてNOTを指定する場合

詰まったので備忘録します。

findメソッドでDBからデータをセレクトする際
条件式にNOTを指定する方法です。
書き方は
$member_list=$this->Member->find('list',array('conditions'=>'not role=2','fields'=>'name'));

ほぼ通常のSQL文と同じですね☆

以上

2010年8月16日月曜日

【CakePHP関連】連続でInsertする際の注意点

詰まったので備忘録します。

参考サイト
http://www.msng.info/archives/2008/02/cakephp_save_insert_update.php
ありがとうございました。

以上

2010年8月6日金曜日

【CakePHP関連】ajax->linkヘルパーの画像表示するには

詰まったので備忘録します。
Ajaxヘルパーの、Linkメソッドがありますが
画像リンクにしたい場合
第一引数に$this->html->image(画像ファイルパス,null)
のように画像を生成するメソッドを利用するだけでは
表示がエスケープされ、画像が表示されません。

表示させるには
Linkメソッドの第5引数をFalseにする必要があります。
これは第一引数の文字をエスケープしないようにしますので
タグが有効化され、うまく画像が表示されます。

参考サイト
http://q.hatena.ne.jp/1216385183
ありがとうございます。

以上です。

2010年7月22日木曜日

【CakePHP関連】ヘルパーによって生成したラジオボタンの初期値の設定方法

何気によく忘れるので備忘録します。

radioメソッドの第3引数に
array('value'=>'1')といった具合に指定してあげるといけます。

以上

2010年7月21日水曜日

【CakePHP関連】オリジナルレイアウトのタイトルを設定する際の注意事項

時間をつぶしてしまったので備忘録します。

CakePHPではオリジナルのレイアウトを設定できますが
その際にページタイトルを各コントローラーのアクションメソッドごとに設定ができます。
Webで調べてみると
$this->pageTitle で設定できます、的なことが書いてあったので
下記のように記述
$this->pageTitle('タイトル');

できませんでしたorz

正確には
$this->pageTitle = 'タイトル'; でした☆

また、ctpファイル(テンプレート的なもの)でもタイトルタグの間に
<?php echo $title_for_layout; ?>と書きましょう。
私はこれを<?php echo $title_for_Layout; ?>となぜか大文字で書いてしまい
またまたできませんでしたので・・・

まとめ
コントローラー内では
$this->pageTitle = 'タイトル';

ctpファイルでは
<?php echo $title_for_layout; ?>

以上です。