ナチュログ管理画面 その他 その他 東海 アウトドア&フィッシングナチュラムアウトドア用品お買い得情報
ブログ作成はコチラ
あなたもナチュログでアウトドア生活を綴ってみませんか?
プロフィール
MJ
組込み系のエンジニアをやっていましたが、時代の流れとともにWeb系にシフトし、最近では、その技術を生かしIT技術講師をやっています。
私が目指す講義のあり方は、技術者として当然スキルは身につけていただきますが、人としても育っていただきたいと考えています。

アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
QRコード
QRCODE
Information
アウトドア用品の
ご購入なら!

2014年07月11日

2014/07/10 CakePHP2 -1-Controllerどこをいじればいいの。。。

Cake使えば、コーディングしなくてもいいや!とか甘いと思いながらも、そのハニーポッドに手を突っ込んでしまっているわけですが。。。
そんな事はないわけです。
そもそも、なんてフレームワークとか使うの?って話は、コーディングしたくないからwwwですよ。

その割には、内部のソースコードとか見ないといけないので、逆につらいときもありますけど。。。

2014/07/09 CakePHP2をインストールと自動生成」(前回)bakeして、自動生成しました。

その、生成したファイルをどの様に編集すれば、いいのかわかりませんので、思い通りに修正する事ができませんw

Model-View-Controller(MVC)について話を進めていきます。分からない方は「MVCとは」を参照してください。

1.Controllerについて
まずは、触らなければならない対象のファイルの場所です。

C:\pleiades\xampp\htdocs\cakephp2    ←CakePHP2インストールフォルダ
\app\Controller                  ←コントローラの場所
\PostsController.php              ←アプリケーション名Controller.php

URLを指定する時は
原則:http://ドメイン/CakePHPのディレクトリ/アプリケーション/アクション
例:http://localhost/cakephp2/アプリケーション/アクション

と指定します。この時「New Post(アプリケーション名)」ボタンをクリックすると、
http://localhost/cakephp2/posts/add
にアクセスします。addがメソッド(アクション名)なわけですね。

このファイル(ここでは、PostsController.php)の中身を見ると、以下のメソッド(Action)があります。
分かるところは、コメント書いておきます。

ここで分かるところは、データの準備までを各メソッド(アクション)で行うのかな?
変段基準は、edlitとaddのメソッドの違いで、addは初回のデータの準備の必要ですからねw


public function index() {
$this->Post->recursive = 0;

//posts・・・この名前で検索結果を設定する。
//$this->Paginator->paginate()・・・array形式で検索結果を取得する。条件を指定するならここ。
$this->set('posts', $this->Paginator->paginate());
}


public function view($id = null) {
if (!$this->Post->exists($id)) {
throw new NotFoundException(__('Invalid post'));
}
//$idにはプライマリキーを指定されているので、1件抽出する。
$options = array('conditions' => array('Post.' . $this->Post->primaryKey => $id));
//postに検索結果を代入する
$this->set('post', $this->Post->find('first', $options));
}


public function add() {
//???
if ($this->request->is('post')) {
//???
$this->Post->create();
//リクエストデータを取得し、DBにインサートする
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(__('The post has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The post could not be saved. Please, try again.'));
}
}
}


public function edit($id = null) {
//データがなければエラー
if (!$this->Post->exists($id)) {
throw new NotFoundException(__('Invalid post'));
}
//???
if ($this->request->is(array('post', 'put'))) {
//DBに保存
if ($this->Post->save($this->request->data)) {
//update
$this->Session->setFlash(__('The post has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The post could not be saved. Please, try again.'));
}
} else {
//DBよりデータ取得し、表示する
$options = array('conditions' => array('Post.' . $this->Post->primaryKey => $id));
$this->request->data = $this->Post->find('first', $options);
}
}


public function delete($id = null) {
$this->Post->id = $id;
if (!$this->Post->exists()) {
throw new NotFoundException(__('Invalid post'));
}
$this->request->allowMethod('post', 'delete');
if ($this->Post->delete()) {
$this->Session->setFlash(__('The post has been deleted.'));
} else {
$this->Session->setFlash(__('The post could not be deleted. Please, try again.'));
}
return $this->redirect(array('action' => 'index'));
}


今回はコントローラに関しての調査で終了しちゃいましたw



----------------------------
追加
----------------------------
追記します。
コントローラで使用されるメソッド
render()メソッド
  指定されたView(*.cpt)を読み込んで画面を表示します。
  アクションメソッド内でrender()を実行しない場合、アクション名Action名と同名のViewを表示します。

例1) index.cptをします。
 $this->render();
例2) URL直接指定
 $this->render("http://cakephp.org/");
例3) 指定のアプリ/Viewを指定し、移動
 $this->render(
          array(
             "controller" => "posts",
             "action" => "index"
          ));


set()メソッド
  ControllerからViewにデータを受け渡す場合に使用します。
  Modelから取得した情報をset()メソッドを使い値をセットした後、Viewにrender()で画面に表示します。

例1) 単独値を設定
 $color = "pink";
 $this->set("color", $color);
例2) 連想配列を展開してViewに渡す方法(はじめに連想配列を指定した場合は展開される)
 $data = array(
          "city" => "Nagoya",
          "maker" => array("HONDA", "YAMAHA", "SUZUKI")
       );
 $this->set($data);


redirect()メソッド
  指定たURLに移動します。

例1) 絶対パス指定
 $this->redirect("http://cakephp.org/");
例2) ・・・/posts/indexにredirect
 $this->redirect(
           array(
               "controller" => "posts",
               "action" => "index"
           ));


flash()メソッド
  redirect()に似ているが、redirectする前に指定したメッセージを表示してからredirectします。
  ただし、デバッグが有効の場合は、メッセージをクリックする事でredirectします。

例1) 絶対パス指定
 $this->flash("http://cakephp.org/");
例2) 10秒後にredirect
 $this->flash(
         array(
             "controller" => "posts",
             "action" => "index"
         ),
        10
 );


setFlash()メソッド
  $this->Session->setFlash()メソッドを使用すれば、転送先のページでメッセージが表示します。

例1) 転送先のページでメッセージ表示
 $this->Settion->setFlash("入力を受け付けました。");
 $this->redirect(
           array(
               "controller" => "posts",
               "action" => "index"
           ));




●倒れるだけで腹筋ワンダーコアでおなじみの商品です。
ショップジャパン 【正規品】ワンダーコア(WONDER CORE)DVD付
ショップジャパン 【正規品】ワンダーコア(WONDER CORE)DVD付




同じカテゴリー(CakePHP2)の記事画像
2014/07/23 CakePHP2 -6- Time型で時刻だけ表示したい どこをいじればいいの。。。
2014/07/22 CakePHP2 -5- VIew(DB)とMVCマスタ情報表示 どこをいじればいいの。。。
2014/07/15 CakePHP2 -4- MVCマスタ情報表示 どこをいじればいいの。。。
2014/07/13 CakePHP2 -3-国際化どこをいじればいいの。。。
2014/07/09 CakePHP2をインストールと自動生成
同じカテゴリー(CakePHP2)の記事
 2014/07/23 CakePHP2 -6- Time型で時刻だけ表示したい どこをいじればいいの。。。 (2014-07-23 13:38)
 2014/07/22 CakePHP2 -5- VIew(DB)とMVCマスタ情報表示 どこをいじればいいの。。。 (2014-07-23 00:42)
 2014/07/15 CakePHP2 -4- MVCマスタ情報表示 どこをいじればいいの。。。 (2014-07-20 11:05)
 2014/07/13 CakePHP2 -3-国際化どこをいじればいいの。。。 (2014-07-13 17:10)
 2014/07/11 CakePHP2 -2-Model&Viewどこをいじればいいの。。。 (2014-07-11 18:19)
 2014/07/09 CakePHP2をインストールと自動生成 (2014-07-09 22:01)

※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
2014/07/10 CakePHP2 -1-Controllerどこをいじればいいの。。。
    コメント(0)