CakePHPテキストフォームのサイズを変更
フォーム要素の自動生成で、フォームヘルパーを利用した際、テキストの入力ボックスのサイズの指定です。
なぜかマニュアルには記載がなかったので、書いておきます。
オプションの指定に’size’を指定しましょう。
例 echo $form->input('age',array( 'size' =>'3'
)
);
フォーム要素の自動生成で、フォームヘルパーを利用した際、テキストの入力ボックスのサイズの指定です。
なぜかマニュアルには記載がなかったので、書いておきます。
オプションの指定に’size’を指定しましょう。
例 echo $form->input('age',array( 'size' =>'3'
)
);
いつも忘れてしまうので、メモです。
link(string $title, mixed $url = null, array $options = array(), string $confirmMessage = false)
1番目の引数がリンクされる文字、2番目の引数がリンク先のURLを出力するパラメーター、3番目の引数がオプションのパラメーター(なくてもよし)、4番目がクリックすると表示されるメッセージ(なくてもよし)です。
2番目、3番目はそれぞれ配列にすることができます。
//例 <?php echo $this->Html->link( 'クリックしてね', array('controller' => 'コントローラー名', 'action' => 'アクション名', 渡したいパラメーター), array('class'=>'link_style'), "本当にクリックしていいの"); ?>
公式マニュアルサイト
http://book.cakephp.org/ja/view/1442/link
PHP
CakePHP 1.3
CakePHPのよいところは、関連するデータを簡単に取得できるところですが、時に多くの関連データを取得してきたり、または取得したいデータを取得できなかったり、自由が効きません。
しかし!containerというビヘイビア(コンテイナブル)を使えば、両方の悩みが解決します。
次のようなモデルがあるとします。
クラス名:Student(弟子) テーブル名:students id name 1 孫悟空 2 ヤムチャ 3 天津飯
クラス名:Teacher(師匠) テーブル名:teachers id name 1 亀仙人 2 桃白白 3 カリン様
クラス名:Teacherskill(師匠の必殺技) テーブル名:teacherskills id name 1 かめはめ波 2 どどん波 3 体力回復
Studentは多くのTeacherを持つことができ、Teacherは一つのTeacherskillを持っています。
他にも多くのStudentAddress(弟子の住所)などの複雑なデータ構造があるとします。
さて、Studentクラスから、Teacherskillの名前を取得しようとします。
デフォルトのfindを利用した取得はかなり複雑で、多くの関連データを取ってきてしまいます。
今までは、それを制御するのにrecursiveや、unbind、bindを利用していましたが、それより簡単です。
コンテイナブルを利用して、次のように書けます。
//students_controller内 $this->Student->Behaviors->attach('Containable'); $this->Student->find('all', array('contain' => array( 'Teacher' => array( 'Teacherskill' ) ) ) );
参考:
http://book.cakephp.org/ja/view/1323/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%A4%E3%83%8A%E3%83%96%E3%83%AB
PHP
CakePHP2.5.6
CakePHPのよいところの一つが、バリデーションが簡単にできるところですが、alphaNumericは半角英数字だけのバリデーションではありません。
「文字列と数字」なので、日本語もOKになっています。
なので、下記のようにすると、日本語も通してしまいます。
public $validate = array( 'customer_cd' => array( array( 'rule' => 'alphaNumeric', 'message' => '名前は半角英数字にしてください。' ) ) }
下記のように、正規表現を利用して、半角英数の判定をしましょう。
public $validate = array( 'customer_cd' => array(
array(
‘rule’ => ‘/^[a-z0-9]{3,}$/i’, //半角英数字のみ
‘message’ => ‘名前は半角英数字にしてください。’
)
)
)
CakePHPがインストールしてあるディレクトリへのパスなどは、
http://book.cakephp.org/ja/compare/122/%E3%82%B3%E3%82%A2%E5%AE%9A%E7%BE%A9%E5%AE%9A%E6%95%B0
で参照できますが、Webサーバー上のパスは、次のように参照できます。
$this->webroot;