Home > Archives > 2007-11

2007-11

CakePHP1.2でValidation関係を触ってみる。

本当に1.2系列のKnowledge無いんですね・・・・。英語のドキュメントすらないとは・・・。
ってことで、次は1.2系を入れた理由の1つ、入力文字の判定周りを触ってみます。

まずは、Modelで定義する方法。


var $validate = array( 'owner_mail' => array(
'rule' => array('email'),
'message' => 'メールアドレスは正しく入力してください'));

$validateで設定をします。
公式はこんな感じ?
$validate(’カラム(キー)値’ => array(’rule’ => array(’ルール定義’),’message’ => ‘エラー時のメッセージ’));
エラー時のメッセージは入力フォームの直後に出ます。

次にController。


$this -> Model名 -> validates($this ->data);

今回は、データ投入をするのではなくあくまで入力内容チェックなので、これだけ。
ポイントは「validates」。「s」付きですよ!
これでModelに書いたデータを精査します。

最後はView。


< ?php echo $form->error(’save等で使った入力キー値’, ‘エラー文’);?>

通常、エラー文は出るので、これはたとえば入力フォームの一番上に列挙する形で置いておくのがいいかもしれません。
良くあるパターンですね。エラーがあるときだけ文章が出てくる感じ。

で、動いてはいるんだけど・・・なんかアラートが出てる罠。

Warning (512): (Model::validates) Parameter usage is deprecated, set the $data property instead [CORE/cake/libs/model/model.php, line 1745]

何々、えーと・・・「パラメータの書き方は非推奨、$dataの特性?を推奨します。」

ん??

validatesの書き方がおかしいのかな・・・・?もうちょっと調査します。

[tags]CakePHP,Validates,1.2,CakePHP1.2[/tags]

PostgreSQLでカラム名(列名)を取り出す方法

CakePHPでscaffoldの代わりみたいな感じで、自動に挿入されるcreatedやID等を取り除いたヘルパーライクな物を作ってます。
で、開発環境がPostgreSQLなので・・・汎用的にカラム名を取り出す方法が全く分からず。
調べていたら会社の先輩が教えてくれました!

とりあえず、かなり特殊なので・・・メモっておきましょう。

問題のSQL文はこちら。


SELECT
pg_class.relname,
pg_attribute.attname,
pg_attribute.atttypmod,
pg_attribute.attnum,
pg_attribute.attalign,
pg_attribute.attnotnull,
pg_type.typname
FROM
pg_class,
pg_attribute,
pg_type
WHERE
pg_class.oid = pg_attribute.attrelid and
pg_attribute.atttypid = pg_type.oid and
pg_class.relname='テーブル名' and
pg_attribute.attnum > 0
ORDER BY
pg_attribute.attnum;

これで、カラム名を含んだ検索結果を出してくれます。

いやぁ、超マニアックな技過ぎ・・・・。
PostgreSQLを使ってプログラミングされてる方は是非どうぞ。

[tags]PostgreSQL,SQL,カラム名を取り出す[/tags]

CakePHP 1.2系でFormHelperを使う(Radio編)

CakePHP1.2系で追加されたヘルパーのFormHelper(フォームヘルパー)を使った話です。

どうしてもラジオボタンが言う事を聞いてくれないんですよね・・・。
勝手に括弧が付いたり、フィールド名で括られたり。
っていうことで、解析。

ヘルパーのプログラムファイルを覗いてみましょう。

インストールディレクトリ/cake/libs/view/helpers/form.php

このフォルダ内に、全てのヘルパーファイルがあるんで困ったらここを見るといいですよ。
ここでFormヘルパーの部分をチェック。

742行目あたりがそうですね。一部を抜粋。


/**
* Creates a set of radio widgets.
*
* @param string $fieldName Name of a field, like this "Modelname.fieldname"
* @param array $options Radio button options array.
* @param array $attributes Array of HTML attributes. Use the 'separator' key to
* define the string in between the radio buttons
* @return string
*/
function radio($fieldName, $options = array(), $attributes = array()) {
$attributes = $this->__initInputField($fieldName, $attributes);
$this->__secure();

$legend = false;
if (isset($attributes['legend'])) {
$legend = $attributes['legend'];
unset($attributes['legend']);
} elseif (count($options) > 1) {
$legend = Inflector::humanize($this->field());
} $label = true; if (isset($attributes['label'])) { $label = $attributes['label'];
unset($attributes['label']); } $inbetween = null;
if (isset($attributes['separator'])) { $inbetween = $attributes['separator'];
unset($attributes['separator']);
}

if (isset($attributes['value'])) {
$value = $attributes['value'];
} else {
$value = $this->value($fieldName);
}

$out = array();

ここの所のFunctionの引数に注目。

function radio($fieldName, $options = array(), $attributes = array())

ふむふむ、ってことは、radioは第3引数までで、第2と第3はArrayで渡せと。

で、該当する中身を読む。
$attributesの配列の中に入れられるものは3つの変数。$legendと$labelと$separator。
この3つのどれかでなるだろ・・・と思っていじったら出来た。

もし、枠囲いされてフィールド名が出て邪魔だと思う場合は・・・

< ?php echo $form->radio(’フィールド名’,array(’選択候補1’ => ‘POST値’ , ‘選択候補2′ => ‘POST値’),array(’legend’ => false)); ?>

ポイントはlegendという値ですね。

legend = false →枠が表示されない(フィールド名が表示されない)
legend = true →「1」と表示
legend = ‘文字列’ →枠囲いの表題が「文字列」に。

何はともあれ、悩んだ末に出来てよかった・・・。

というかCakePHPの1.2に関する記述がやたら少なくて、見つけ出すのも一苦労ですねぇ・・・。

メモ書き程度にここに色々残していきますが、動かないとか出来ない報告あれば対応します。

CakePHP 1.2の新機能 FormHelper(フォームヘルパー)について

はい、CakePHP1.2をいじっていますが、CakePHP1.1x系と違うと気付いた点がここです。

「$formが増えた??」

これがいわゆるフォームヘルパーですねぇ。
今まではViewで< ?php echo $html -> input(’Home/address’); ?>とか書いていたものが、ちょっと変わりました。

まずは、controllerで以下の記述を追加してください。

var $helpers = array(’form’,'html’);

これで使えます。厳密にはhtmlいらないんですけどね。

続いてview。

例えば、Inputformで、キーが「firstName」ならこんな感じ。

< ?php echo $form->input(’firstName’); ?>

で、追加要素はいつもの通り、Arrayの形で渡してください。

< ?php echo $form->input(’firstName’, array(’label’ => ‘生成フォームの前のText’, ‘value’ => ‘初期値’ , ‘empty’ => 【tureでNULLを認めない。認めるならFalse(初期値)】)) ?>

その他のFormエレメントに関しては英語ですが、ここで見てください。
http://www.donutczar.com/blog/?p=3

聖徳太子の超改革を見た。

聖徳太子の超改革という番組を見ました。

聖徳太子=ユビキタスな人っていう定義が無茶振りな気がします(笑)

でも聖徳太子は凄いですねぇやっぱり。

歴史詳しくないですけど、やっぱり彼が行った功績は日本人の日本人たるものに気付かせてくれるものだった気がします。

文字による情報伝達って寺子屋がルーターだったのね・・・(笑)

ってかこれパナソニック提供だったんだ・・・。だから中身がこんなんなのか・・・。

オンラインフリーなVisioっぽいツール Gliffy

Gliffy.com

Visioみたいな機能を持っています。日本語入力可能なんで、結構便利かも。
ウノウラボの仕様書を書くオンラインツールまとめにありました。

これでDBDesignerと組み合わせれば結構便利かもー。

CakePHPを勉強 命名規則。

CakePHPについて、勉強を続けています。
今回は命名規則。忘れそうなんでホワイトボードにとりあえず書いて起こしました。

文字が汚いですが、どうぞー。
CakePHP 命名規則について

とりあえず、一ついえることは、Controllerの扱いだけ気をつければOKですね。

sをつけるかつけないか。難しい。

あとここには書いていないですが、DBのテーブルカラム名に関してもある程度命名規則があります。
そこ等辺は次に書いておきましょう。

CakePHP Ver1.2を強引にXREAで入れてみる。

とりあえず結果からいいますと、入りました!

一応外部公開を視野に入れた場所においてあるので、位置がポイントです。

-public_html - project.manjiro.net - (cake/app/webrootの中身全部)

その他のファイルはpublic_html配下にcakephpというフォルダをつくりそこに入れました。

あとは、index.phpの設定がポイントです。


if (!defined('ROOT')) {
define('ROOT', DS.'virtual'.DS.'manjiro'.DS.'public_html'.DS.'cakephp');
}

このROOTの定義部分をしっかりとcakephpを置いた場所にすれば動きます。多分。

今から開発作業をしてみますー。

とりあえず、CakePHPガイドブックはかなり便利です。やるなら買っておいた方が楽・・・。

フリーのマインドマップソフト発見!aiNote

フリーのマインドマップソフトを発見しました。
その名もaiNote。

株式会社アークウェイ aiNote

主な特徴は以下の通り。

・なぜかOffice2007の風貌を持ったソフト
・日本語親和性高い
・見た目が綺麗
・各ファイルへのエクスポートは現状不可能

Google、SNS向け共通API「OpenSocial」を正式発表 - ITmedia News

Google、SNS向け共通API「OpenSocial」を正式発表 - ITmedia News

ソーシャルネットワーキング機能群の基盤をGoogleがAPIで共通提供するという、前々から考えていた話がとうとう行われるようです。

具体的には「プロファイル情報、友人リスト、友人に活動情報を知らせる機能」の3つのAPIが提供されるみたいですね。

SNS(ソーシャルネットワーキングサイト)はちょっと飽和状態なんですが、いわゆるネットで言う「成熟期」なので、まだ需要はあると思います。
ただ、市場の伸びとしては「→」、横ばいですねぇ。

ただ、これでまたGoogleが文字データを引っ張ってこれやすい環境が整ったわけです。

なんというか・・・。凄いねぇ。

Home > Archives > 2007-11

カテゴリー
blog chart

Return to page top