情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

サイトレビューサイト制作への道その3

cakePHP管理者画面チェックボックスを追加

1.チェックボックスを作る

2.文字表示をする

3.コントローラー側で準備

4.ビュー側で受け取り

5.まとめ

1.チェックボックスを作る

管理者画面を制作していきたいと思います。サイトのカテゴリーを選べるチェックボックスを作ります。 サイトを追加するときにサイト名やURLと一緒にそのサイトで解説している言語を設定したいので言語ごとのカテゴリーを設定できるチェックボックスが必要になります。 まず初めに超シンプルなチェックボックスを作りたいと思います 「xampp」フォルダの「htdocs」の制作中のフォルダを開きます。 「view」フォルダの中の「add.ctp」を編集していきます。 「 public function add() { 」内が追加するときのページに関わるのでこちらを編集していきます。 f:id:nonaka-katuma-hal:20160801163646j:plain このページを変更していきます。

<?php echo $this->Form->create('Site'); ?>
    <fieldset>
        <legend><?php echo __('Add Site'); ?></legend>
    <?php
        echo $this->Form->input('site_name');
        echo $this->Form->input('img_src');
        echo $this->Form->input('url');
        echo $this->Form->input('review');

この下に

 echo $this->Form->checkbox('done');

を書くことで一個だけのチェックボックスを設置出来ます。

2.文字表示をする

このままでは何のためのチェックボックスなのか分からないので文字を足します。

        $options = array(
                2 => 'ajax',
                6 => 'backbone.js',
                8=> 'Bootstrap',
                13 => 'CoffeeScript',
                );

                echo $this->Form->input('field', array(
                'options' =>$options ,
                'type' => 'select',
                'multiple'=> 'checkbox',
                'empty' => '(choose one)'
                ));

これを書くことで ajax backbone.js Bootstrap CoffeeScript の四つのチェックボックスを表示出来ます。

3.コントローラー側で準備

次に「Controller」フォルダの「SitesController.php」を編集していきます。

class SitesController extends AppController {
    public $components = array('Paginator');
        //Categoryを宣言
        public $uses = array('Category');  //この行を追加する
 public function add() {

の直下に

                $data = $this->Category->find('list', array(
                'fields' => array('Category.id', 'Category.cat_name'),
               ));
              $this->set('category', $data);  //setでビュー側へ送る準備になっている
               // $data = $this->Category->find('list');
               // pr($data);    //デバッグ表示 
               // debug($data);   //デバッグ表示(何行目かまで表示)

これでコントローラー側の

4.ビュー側で受け取り

あとはビューに戻り

 echo $this->Form->input('field', array(
                'options' =>$category,   //ここを$optionsから$categoryに変えている
                'type' => 'select',
                'multiple'=> 'checkbox',
                'empty' => '(choose one)'
                ));

少し変更を加えると、、、 カテゴリーを増やすとサイトを増やすときのチェックボックスにそのカテゴリーが追加されている。

5.まとめ

これで必要な言語をどんどん追加できます。今回のややこしいポイントはフォルダ間のデータの引き渡しでした。 これからも使うものだと思うので復習はしていきたいと思いました。。