2009年12月22日火曜日

CakePHP モデル 空の配列

$blank = array_fill_keys( array_keys($this->Model->getColumnTypes()), false );
全部にfalseをいれてみた。newとかでできるのかな?
new $this->Model は過剰だし、objectだし。
getDisplayField()はDBの初期値が入るだけだった。

2009年12月10日木曜日

prototype.js の基本

javascriptの、document.getElementById("id_name")を
$("id_name")と書くことができる。
$("id_name").innerHTML
$("id_name").value
と使ったりする。
これのフォームエレメント版がこれ
$F("form_element")
$("form_element").valueと同じ

checkbox のチェックONは
$F("chkbox_id")では1だったり
$("chkbox_id").checkedはtrueだったりする。

http://www.openspc2.org/JavaScript/Ajax/ref/prototype.js/

CSS button

押下できるイメージボタン
<button style="cursor: pointer; background-color: inherit; border:none;">
<img src="btn.gif" />
</button>

CakePHP SQL Where句

イコール以外のWhere句を書くとき
'conditions' => array(
  user_id => $id,
  'User.user_age > ' => $age,
  'User.name like ' => '%' . $name . '%',
)

dot接続ではなく、矢印接続も可能

2009年12月7日月曜日

Qdsmtpのエラーオフ

$this->Qdmail->smtpObject()->error_display = false;
メソッドが用意されてないので、これでOK?

http://hal456.net/qdsmtp/

2009年12月3日木曜日

CakePHP コントローラでpath

ヘルパーから取ればいいのかな?

Helper::webroot()
Helper::url()

$this->here

echo して良さげなのを使うのさ。

CakePHP コントローラでいろいろOFF

$this->layout = false;  // layout off
$this->autoRender = false;  // render off

$this->output = false;  // output off ?

var $users = array();  // model off

モデルでテーブル無しは
var $useTable = false;

2009年12月2日水曜日

Ajax PHP Javascript 配列渡し

    function click_addr()
    {
        var url = '/input_addr';
        var params = 'data[tablename][zip_code]=' + $F('zip_code_1');
       
        var myAjax = new Ajax.Request(
            url,
            {
                parameters: params,
                onComplete: function(obj) {
                    res = obj.responseText;
                    var data = eval("(" + res + ")");
                    if (data["error"] == "") {
                        $('address_1').setValue(data["prefecture_code"]);
                        $('address_2').setValue(data["address_2"]);
                        $('address_3').setValue(data["address_3"]);
                    }
                }
            });
    }
  

2009年11月30日月曜日

Prototype Window

ライブラリ 
<script type="text/javascript" src="../javascripts/prototype.js"> script> 
<script type="text/javascript" src="../javascripts/effects.js"> script>
<script type="text/javascript" src="../javascripts/window.js"> script>
<script type="text/javascript" src="../javascripts/window_effects.js"> script>
テーマ共通
<link href="../themes/default.css" rel="stylesheet" type="text/css" >link>
テーマ 
<link href="../themes/alphacube.css" rel="stylesheet" type="text/css" >link>
 
<script>
function win(event) {
var x = Event.pointerX(event)
var y = Event.pointerY(event) 
var win = new Window({className: "テーマ", title: "タイトル", width:350, height:400, top: y, left: x}) }
win.show();
win.setAjaxContent(url, {
 parameters: prms 
});
win.setDestroyOnClose();
</script> 
 
http://prototype-window.xilinus.com/ 

2009年11月19日木曜日

CakePHP Validate メッセージに変数を入れるとか

var $validate = array(
'password' => array(
'rule1' => array(
'rule' => 'notEmpty',
),
'rule2' => array(
'rule' => array('minLength', '6'),
),
),
'password_confirm' => array(
'rule1' => array(
'rule'=> array('checkCompare'),
),
),
);

function beforeValidate()
{
$this->validate['password']['rule1']['message'] = MESSAGE_1;
$this->validate['password']['rule2']['message'] = MESSAGE_2;
$this->validate['password_confirm']['rule1']['message'] = MESSAGE_3;
}

2009年11月16日月曜日

Bloggerて

HTMLそのまま表示されるのか。

2009年11月12日木曜日

CakePHP でメール送信

デフォルトのMailコンポーネントでもかなりいいけど。
Qdmailをコンポーネントに入れて使うと、文字化けとか心配しなくていいのがいい。
ついでにQdsmtpをいっしょにComponentに入れると、SMTP送信もすぐできた。
余計な設定が不要なのはナイス。

http://hal456.net/qdmail/smtp

2009年11月11日水曜日

Ajax prototype ボタン押してロード中にクルクルするあれ

<div id="update_div"></div>
<div id="loading_img"><img src="kurukuru.gif"></div>
<button type="button" id="a_button">push</button>

Event.observe('a_button', 'click', function(event) {
new Ajax.Updater('update_div', '/update/contents', {onLoading:function(request) {Element.show('loading_img');Element.hide('a_button')}, onComplete:function(request) {Element.show('a_button');Element.hide('loading_img')}, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'update_div']});
}, false);

2009年11月9日月曜日

CakePHP のバリデーション

単純にモデルの$validateを使うなら、saveのタイミングでチェックが入る。
しかし、実用的には、このあたりを使うことになる。
$this->ModelName->set($this->data);

if ($this->ModelName->validates()) {
// it validated logic
} else {
// didn't validate logic
}


if ($this->Model->saveAll($this->data, array('validate' => 'only'))) {
// validates
} else {
// does not validate
}


http://book.cakephp.org/view/410/Validating-Data-from-the-Controller

Google AJAX Libraries API

Ajaxのライブラリを、Googleから読み込む書き方。

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("prototype", "1.6");
google.load("scriptaculous", "1.8.2");

google.load("jquery", "1.3.1");
google.load("jqueryui", "1.5.3");
</script>

http://code.google.com/intl/ja/apis/ajaxlibs/

2009年11月8日日曜日

Ubuntu 9.10きてた

HP mini1000 で9.04は音がでなかったのが、音なるようになった。
Updateでやったら、すごい時間かかった。クリーンインストールした方がはやそうだ。

2009年11月6日金曜日

CKEditor

CKEditor。フォームのtextareaに使えるWYSIWYGなエディタ。
CakePHPで使うときは、webrootのjsディレクトリに、全部入れちゃうのが簡単。

Bakeryいまさら感が。貼るだけだからヘルパーとか書く方が冗長。
ツールバー設定できるヘルパーとかなら欲しい!
http://bakery.cakephp.org/articles/view/ckeditor-3-x-new-fckeditor-version

CakePHP http_socket

CakePHPのhttp_socketが便利だ。
Dead Linkを調べるのに使用した。

$socket->get($url) して、$socket->response['status']['code']が200なら生きてる、みたいな。
ソースみてつかってしまったけど、こういう書き方はダメなんだろうなといつも思いつつ、取れるからいいやで使ってしまう。

参考
http://www.syuhari.jp/blog/archives/825
http://api.cakephp.org/view_source/http-socket/
Hey!