2015年6月11日木曜日

【cakePHP】ヴァリデーションエラーをDIVで囲わせたくない

cakePHP で、ヴァリデーションエラーを明示的に表示したい場合、以下のようなコードをViewに書く。
-------------- 

<?php echo $this->Form->error("モデル名.フィールド名"); ?>
-------------- 

すると、実際は以下のようなHTMLが出力される。

-------------- 
<div class="error-message"> 
    郵便番号の形式が不正です。(半角数字と半角ハイフンのみ有効)
 </div>
-------------- 

しかし、DIVが邪魔であると。
DIVで囲わせたくない時、以下のように書く。第2引数、第3引数(配列)が必要。

[Viewに書くコード]
-------------- 

<?php echo $this->Form->error("モデル名.フィールド名", null, array("wrap"=>false,)); ?>
-------------- 

2015年6月10日水曜日

【PHP】Cookieを書き込むときはパス情報を意識する

Webサイトの機能拡張の案件。

既存のログインシステムがあるのでそれに合わせないといけない。

そのサイト自体はcakePHPで作るようなデータベースを持っておらず、外部のAPIでログイン機能を実装している。

調べてみると特定の名前のCookieが書き込まれていればログインであるという判断をしている。

こちらでもログインを制御するためにCookieを見たり書き込んだりしていた。

ところがうまく動かないことがある。

ブラウザでCookieを見てみると、CookieにはCookie名と有効期限だけでなく、「パス情報」が付属している。

既存のログインシステムでは、そのドメインでの一番浅い階層で Cookieを書き込んでいた。
なので、こちらでCookieを書き込むときも、パス情報を合わせる必要がある。

PHPでは、setcookie()関数の第四引数がパス指定となっている。


------------------------------------
setcookie(
    "name", //クッキー名
    "value", //値
    0,          /クッキーの有効期限
    "/"       //パス
);
------------------------------------

参考:http://php.net/manual/ja/function.setcookie.php


JavaScriptの場合:パスを指定しつつCookieを書き込む
------------------------------------
document.cookie = "name=value; path=/";
 ------------------------------------