cssで、フッターをブラウザの下に表示する方法

参考情報はこちらです。

超手抜きな更新になってすみません。メモ代わりってことで。

ネットで色々と調べてみましたが、コンテンツ量が少ないときは確かにブラウザの一番下に表示されたのですが、コンテンツがスクロールバーが出るくらいになると、コンテンツとフッターが重なってしまってダメだったのだが、上記のリンクのサイトを参考にしたら、出来ました。英語のサイトですが、英語読まなくてもソースが書いてあるのでそれだけ見ればわかります。


CakePHP:action名listを呼ぶ方法

cakephpの話。

scaffoldを使っているときだと、action名にlistを指定したら、デフォルトだとコントローラーに紐付くテーブル情報一覧が表示される。しかし、自分でリストをカスタマイズして作りたい場合、action名にlistを指定したら、PHP関数のlistを上書きする扱いになるみたいでダメだった。そこで、どうやったらaction名にlistを指定できるのかを研究したので報告。

<?php
// コントローラー内で行う
class SamplesController extends AppController{
var $scaffold;
function beforeFilter(){
// 親クラスのbeforeFilterの呼び出し
parent::beforeFilter();
// もしもaction名がlistだったら
if($this->action == "list"){
// 自分が呼び出したかったlistの処理をfunction _list()に記述
$this->_list();
$this->render('list');
exit; // exitしないとscaffoldのlistが続けて呼ばれてしまう
}
}
}
?>

これでひとまずOKでした。別にlistというアクション名にこだわらなければ、こんな手間のかかることはしなくてもよいのですが、気になったのでやってしまいました(^^:)


CakePHP:Validatorコンポーネント作成

CakePHP1.1の話。

CakePHPはModelでvalidate機能が使えるので、データベースに値を入れるときにはModel->validates($value)をするだけで値のチェックをしてくれるので非常に楽。ただ、コントローラーのメソッドに対する引数などの値を検証する場合にはどうしても今まで通りのphpでの検証になってしまう。これがまた面倒だなぁ〜と思ったので、ZendFrameworkの力を借りることにした。

ちなみに、Validatorという名前にしているのは、Validateだとコンポーネントとして使うときに、$this->Validateとなってしまい、$this->validates($value)などのコントローラーでのバリデート実装のときに紛らわしいからです。

<?php
// vendorsディレクトリに入っていること
// 必要に応じてZend_Validateクラスを追加してください
vendor('include_path_vendors');
vendor('zend/Validate/Alnum');
vendor('zend/Validate/Alpha');
vendor('zend/Validate/Between');
vendor('zend/Validate/Int');
vendor('zend/Validate/EmailAddress');
vendor('zend/Validate/Float');
/**
* バリデーション用コンポーネント
*
*/
class ValidatorComponent extends Object{
var $controller = null;
var $validator = null;

function startup(&$controller){
$this->controller =& $controller;
}

/**
* アルファベットもしくは数字であるか検証する
*
* @param mixed $string
* @return bool アルファベットと数字のみならtrue、違えばfalse
*/
function is_alnum($string){
$this->validator = new Zend_Validate_Alnum();
return $this->validator->isValid($string);
}


/**
* アルファベットかどうか検証する
*
* @param string $string
* @return bool アルファベットならtrue、違えばfalse
*/
function is_alpha($string){
$this->validator = new Zend_Validate_Alpha();
return $this->validator->isValid($string);
}

/**
* 整数かどうか検証する
*
* @param integer $integer
* @return bool 整数ならばtrue、違えばfalse
*/
function is_int($integer){
$this->validator = new Zend_Validate_Int();
return $this->validator->isValid($integer);
}

/**
* メールアドレスか検証する
*
* @param string $email
* @return bool メールアドレスならばtrue、違えばfalse
*/
function is_email($email){
$this->validator = new Zend_Validate_EmailAddress();
return $this->validator->isValid($email);
}

/**
* 浮動小数点型か検証する
*
* @param float $float
* @return bool 浮動小数点型ならtrue、違えばfalse
*/
function is_float($float){
$this->validator = new Zend_Validate_Float();
return $this->validator->isValid($float);
}

/**
* 指定された範囲内にあるか検証する
*
* @param integer $integer 検証する値
* @param integer $min 最小値
* @param integer $max 最大値
* @return bool 範囲内ならtrue、違えばfalse
*/
function is_between($integer, $min, $max){
$this->validator = new Zend_Validate_Between($min, $max);
return $this->validator->isValid($integer);
}
}
?>

今のところはちゃんと使えているようですので、オッケーということで。
CakePHPは初心者なので、変な点があったら指摘してください。


BD-1のハンドルステムのピンが到着

080324.jpg
先日、BD-1のハンドルステムの折り畳み部分のピンが届きました。注文は、楽天市場のRIDE ON!さんで行いました。私がBD-1を買ったのがここだったので、メールで問い合わせてみたところ、手配してくださいました。本当にありがとうございました!!

そして付けたのですが、Cリング(サイズ6)がもしも割れてしまったら困るので、ホームセンターで買ってきました。ダイキ2店舗にはありませんでしたが、コーナン(アイテム愛媛の前)に行ったら、ありました。このためだけにスナップリングプライヤー(軸用)を買わなければならないのですが(Cリングをはめる工具)、精密用の9mm以下のタイプをと、BD-1で楽々通勤さんのページに書いてありましたが、その精密用が見つからず、なんか小さなスナップリングプライヤーがあったので、ひょっとしたらそちらで出来るかもと思って購入(300円くらい)。下の写真がそれです。リップクリームと同じくらいの大きさ。ちなみに普通のスナップリングプライヤーは2000円以上!高い…。

080324_2.jpg

しかし、ここからが格闘。BD-1にピンを挿したはいいのだけれど、予想以上にCリングを入れる隙間がない!しかも自分が買ったスナップリングプライヤーは、先端が短すぎるために、Cリングがピンの位置まで降りず、なかなか入りませんでした。Cリングをかなり拡げて、ピンの上半分に引っかかるようになった状態で、マイナスドライバーでずらしながらピンの溝にハメましたが、15分以上格闘しました。素直に先端の長いスナップリングプライヤーを買うべきだったのかもしれません(ダイキにはあったので…でもダイキはCリング売ってないし!)

とりあえずピンは着いたので一件落着!かと思いきや、ハンドルはカタカタ。やっぱり折り畳み部分のアルミが今までの振動でゆがんでるようでした。滅多に折りたたまないので、できるだけきつく締めたら音が鳴り止みました。しかし、BD-1で折りたたまなかったら、折り畳みの意味ないやん…。


BD-1のピンを注文

先日、ついにBD-1のステムのピンがなくなってしまいました。押し込んでは走り、押し込んでは走りを繰り返していたのですが、通勤途中でカラカラと音を立てて落下。見つかりませんでした。Cリングはアイテム愛媛の前のコーナンにいったら見つかったのですが、今度は肝心のピンがない。しかもネットで調べてみると、現在のピンはCリングを使うのではなく、割りピンを使うのだとか。そちらのほうが便利そうですなぁ〜。でも0.1ミリ太くて入らないらしいです。

まあ、それは置いといて、途方にくれたのです。アジャスタブルステムを買うしかないのか…。1万7千円もしますから、躊躇してしまいます。たかがピン1本のためになぁ〜と。それで、楽天で買ったので、その楽天のお店に問い合わせてみたところ、取り寄せになるけどあるという情報をゲット!うれし〜!!ただ少々値が張りますが、送料とか考えたら仕方がない値段です。

とりあえず注文することにしましたので、届くのが楽しみです。今もBD-1なんとか乗ってますが、不安です…。

さて、CakePHPの話題。
generateListメソッドの、keyとvalueの設定の仕方が、CakePHPガイドブックとは違ったので、メモしときます。

$this->Model名->generateList(null,”User.id”,null, {n}.User.id, {n}.User.name);

ユーザ登録まで作ったけれど、テーブル定義見直したら意味なくなってしまった・・・ガックリ。