カテゴリ: ヘルパー

ページ: << 1 2 3 4 >>

FormHelper#create()の動作

パーマリンク 2008/07/09 15:36:55 著者: cakephp メール
カテゴリ: ヘルパー, ビュー

CakePHP1.2 RC2

Form タグを生成する View の書き方はこの通り。

<?php e($form->create(null, array('action' => 'edit'))); ?>


実際には、このようなタグが生成されます。

<form id="SampleEditForm" method="post" action="/samples/edit">
<fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset>


データの変更画面などで、Controller において $this->data にデータを渡してあげると、View の書き方は上記のままで、

<form id="SampleEditForm" method="post" action="/samples/edit/10">
<fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset>

というように、action 部分に id が自動で付加されます。

tagValueからvalueに変更

パーマリンク 2008/07/08 11:51:36 著者: cakephp メール
カテゴリ: ヘルパー, ビュー

CakePHP1.2 RC2

View に Model から取得したデータを出力する時、CakePHP1.1 では

<?php e(h($html->tagValue('Sample/name'))); ?>

としていたのですが、CakePHP1.2 RC2 ではそれを使うことが出来ません。

ですので、下記のように変更しましょう。

<?php e(h($html->value('Sample/name'))); ?>

ページ送り機能1.2 RC2(基本版)

パーマリンク 2008/07/04 09:46:30 著者: cakephp メール
カテゴリ: ヘルパー, ビュー, コントローラー

CakePHP1.2 RC2

CakePHP1.2 からは標準でページ送り機能がついています。

まずは、コントローラーに下記のように記載します。

function index()
{
    $option = array(
                'conditions' => array(
                                    'flg' => '0'
                                ),
                'limit' => 20,
                'order' => array(
                            'created' => 'desc'
                           )
              );
    $this->paginate = $option;
    $data = $this->paginate();
    $this->set(compact('data'));
}

$option で条件や表示件数やソートなどの指定をします。


次に、ビューの書き方です。

戻る・次へのリンク

<?php e($paginator->prev('戻る')); ?>
<?php e($paginator->next('次へ')); ?>



1 | 2 | 3 | 4 などのページ番号のリンク

<?php
    e($paginator->numbers(
                    array(
                        'separator' => '&nbsp;',
                        'modulus' => 14,
                    )
                  ));
?>

modulus は表示させるページ数(現在の表示ページは除く)


上記との関連でこの先のページもある事を示す「...」の表示

<?php
    //現在のページ数-modulus/2 > 1
    if ($paginator->counter(array('format' => '%page%')) - 7 > 1) {
        e('...');
    }
?>
<?php
    //現在のページ数+modulus/2 < トータルページ数
    if ($paginator->counter(array('format' => '%page%')) + 7 < $paginator->counter(array('format' => '%pages%'))) {
        e('&nbsp;');
    }
?>


これだけでページ送り機能が実現できます。

ですが、特に管理画面などで同じようなページ送り機能が必要な場合に毎回これを書くのは面倒です。

そこで、app/views/elements/paginator.thtml を作成し、そこに上で書いたコードを全て記述します。
そして、ビュー側は作成したエレメントを呼び出すだけにします。

<?php e($this->element('paginator')); ?>

ビューがシンプルになりました。


関連記事

Formヘルパーをより簡単に記述する方法

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

CakePHP1.2 RC2

<?php e($form->input('id')); ?>

普通に input タグをこのように書くと、自動で label や div が付いてきます。
それを付けないようにするには、

<?php e($form->input('id', array('label' => false, 'div' => false))); ?>

このように書くと付きません。
ですが、ほとんどの input タグで付かなくて良い場合には、毎回書くのは面倒です。

そこで下記の様に Form ヘルパーを変更することで手間を省けます。

[app/views/helpers/form.php]

function input($fieldName, $options = array()) {
    :
    :
    $options = array_merge(array('before' => null, 'between' => null, 'after' => null), $options);

    /**
     * 以下、追加内容
     */
    // label 非表示設定(デフォルト)
    if (!isset($options['label'])) {
        $options = array_merge(array('label' => false), $options);
    }
    // div 非表示設定(デフォルト)
    if (!isset($options['div'])) {
        $options = array_merge(array('div' => false), $options);
    }

日付フォーマットヘルパー

パーマリンク 2008/07/01 16:40:32 著者: cakephp メール
カテゴリ: ヘルパー

日付のフォーマットヘルパーです。

app/views/helpers/html.php(ない場合はcakeからコピー)に下記の内容を追記します。

function dateFormat($date,$format = "Y年m月d日") {
    return date($format,strtotime($date));
}
function df($date,$format = "Y年m月d日") {
    return $this->dateFormat($date,$format);
}

※df は dateFormat の省略形式

呼び出すビュー側は下記の通りです。

<?php e($html->df($date)); ?>


頻繁に利用するフォーマットは予め用意しておくと便利ですね。

例えば、こんな感じで。

function dateFormat($date, $format = "Y年m月d日") {
    if (empty($date)) {
        return false;
    }
    return date($format, strtotime($date));
}
function dfj($date, $format = "Y年m月d日") {
    return $this->dateFormat($date, $format);
}
function df($date, $format = "Y/m/d") {
    return $this->dateFormat($date, $format);
}
function dtfj($date, $format = "Y年m月d日 H:i:s") {
    return $this->dateFormat($date, $format);
}
function dtf($date, $format = "Y/m/d H:i:s") {
    return $this->dateFormat($date, $format);
}
function dmfj($date, $format = "Y年m月d日 H:i") {
    return $this->dateFormat($date, $format);
}
function dmf($date, $format = "Y/m/d H:i") {
    return $this->dateFormat($date, $format);
}
function tmf($date, $format = "H:i") {
    return $this->dateFormat($date, $format);
}




参考:CakePHP::date形式の日付を年月日形式に変換するヘルパー
参考:日付のフォーマット文字列

<< 1 2 3 4 >>

2018年8月
 << <   > >>
      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ブログ     powered by b2evolution