アーカイブ: 2008年10月

CakePHPに関する記事のブックマーク

パーマリンク 2008/10/16 18:31:38 著者: cakephp メール
カテゴリ: ブックマーク

linkさせる時に常にスラッシュを付ける方法とその時の注意点

パーマリンク 2008/10/09 16:57:57 著者: cakephp メール
カテゴリ: ヘルパー

CakePHP1.2 RC2

リンク表示させる時に便利なヘルパーが、HTMLヘルパーのinkメソッド HtmlHelper::link() です。
生成されるリンクの最後に常にスラッシュをつけて表示させたい場合は、このメソッドをカスタマイズします。

cake/libs/views/helpers/html.php を app/views/helpers/html.php にコピーします。

link メソッド内の return の直前に下記内容を追加します。

if (substr($url, -1) != '/') {
    $url = $url . '/';
}

これで、リンクの最後にはスラッシュが常に付いた状態になります。

ただし、このままだと一つ問題が生じます。

TextHelper::autoLinkEmails() を利用すると、自動で mailto のリンクを作成してくれるのですが、内部で HtmlHelper::link() を呼び出している為に、mailto のリンクの最後にまでスラッシュが付いてしまいます。

ですので、それを回避する為に、先ほどの部分を下記の様に変更します。

if (substr($url, 0, 7) != 'mailto:' && substr($url, -1) != '/') {
    $url = $url . '/';
}

郵便番号にハイフンを入れて表示してくれるヘルパー

パーマリンク 2008/10/08 16:54:18 著者: cakephp メール
カテゴリ: ヘルパー, ビュー

CakePHP1.2 RC2

DB で郵便番号を持たせる時は、ハイフンなしの 7 桁で持たせる場合があります。
ですが、表示させる時には、ハイフンをつけて表示させたいものです。
そんな時に使うヘルパーです。

cake/libs/view/helpers/text.php を app/views/helpers/text.php にコピーします。
そのファイルに下記内容を追加します。

function zip($text) {
    if (!empty($text) && strpos($text, '-') === false && strlen(trim($text)) == 7) {
        $text = substr($text, 0, 3) . '-' . substr($text, 3, 4);
    }
    return $text;
}


そして、View から下記のように呼び出せば、ハイフン付きの郵便番号が表示されます。

<?php e($text->zip($data['Sample']['zip'])); ?>

アソシエーション+paginateのやり方

パーマリンク 2008/10/07 19:08:36 著者: cakephp メール
カテゴリ: モデル

CakePHP1.2 RC2

$this->bindModel(array('hasOne' => array('Sample')), false); 

第二引数に false を渡すことでアソシエーションの状態を維持しつつ、ページ送り機能を実現することができます。

参考:Controller::paginate() でアソシエーションを有効にする

flashメソッドのレイアウトを可変にする方法

パーマリンク 2008/10/06 16:04:49 著者: cakephp メール
カテゴリ: コントローラー

CakePHP1.2 RC2

flash メソッドはちょっとしたメッセージを表示する際に便利な機能です。
ただ、そのままの状態では、layout が固定されており、色々なページで使いまわすには、不便を感じることがあります。
そこで、flash メソッドに少し手を加えます(app_controller.php に flash メソッドを作成します)。

[app/app_controller.php]
function flash($message, $url, $pause = 1, $layout = null) {
    $this->autoRender = false;
    $this->set('url', Router::url($url));
    $this->set('message', $message);
    $this->set('pause', $pause);
    $this->set('page_title', $message);
    if (isset($layout)) {
        $this->render(false, $layout);
    } else {
        $this->render(false, 'flash');
    }
}

4番目のパラメータに layout の指定があれば、それを優先するようにしています。

2008年10月
 << < 現在> >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

CakePHPに関する情報をまとめていきます。

開発スピードがアップできればうれしいです。

>>連絡はこちらへどうぞ



CakePHP最新版
CakePHP 1.2.3.8166


CakePHPの書籍

CakePHPによる実践Webアプリケーション開発

CakePHP1.2で作成する人にオススメ。
とても参考になります。

まるごとPHP!(vol.2)

安藤さんの解説が載っています。
AmazonのPagination部分は参考になります。

CakePHPによるWebアプリケーション開発

まだ読んだことありません

CakePHPポケットリファレンス
CakePHPポケットリファレンス
CakePHP1.2 でやるなら、これがあると何かと便利♪

CakePHP徹底入門
CakePHP徹底入門
CakePHP1.2 を今から始めるならここから

Fast CakePHP
Fast CakePHP
シンプルでわかりやすい CakePHP の入門書

CakePHPガイドブック
CakePHPガイドブック
CakePHP1.1 ではとても参考にした CakePHP 最初の入門書

検索

XMLフィード

16ブログ     free blog tool