*

[CakePHP]bakeコマンドでControllerを対話形式で焼き上げる

公開日: : 最終更新日:2014/12/26 CakePHP

基本の三種は焼きあがったのだけど

焼きあがったんですが、Controllerのソースがscaffoldで終わってるので、何がなにやらわかりません。
というわけで、わかりやすくするため、ソースを表示するように対話形式で作成しなおしてみます。

bake開始

---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> c

Controllerを作りたいのでcを指定します。

---------------------------------------------------------------
Bake Controller
Path: /home/[ユーザ名]/www/[ケーキの名前]/app/Controller/
---------------------------------------------------------------
Use Database Config: (default/test)
[default] >
Possible Controllers based on your current database:
---------------------------------------------------------------
 1. Posts
 2. Users
Enter a number from the list above,
type in the name of another controller, or 'q' to exit
[q] > 2

前回のUsersのコントローラを作りたいので、2を指定。

---------------------------------------------------------------
Baking UsersController
---------------------------------------------------------------
Would you like to build your controller interactively?
Warning: Choosing no will overwrite the UsersController. (y/n)
[y] > y

上書き確認です。yを指定。

Would you like to use dynamic scaffolding? (y/n)
[n] > n

今回はスカフォードは使いません! nで返事。

Would you like to create some basic class methods
(index(), add(), view(), edit())? (y/n)
[n] > y

前回とはここからが変わります。
indexなどの基本のメソッドを作りますか? とのことですのでyと返事をして作ってもらいます。

Would you like to create the basic class methods for admin routing? (y/n)
[n] > n

admin routingは利用しないので、nを指定します。
(admin routingがなんなのかまだよくわかってない。)

Would you like this controller to use other helpers
besides HtmlHelper and FormHelper? (y/n)
[n] > y

HtmlHelper と FormHelper の他にHelperを使いますか? とのこと。
とりあえずyにしてみる。

Please provide a comma separated list of the other
helper names you'd like to use.
Example: 'Text, Js, Time'
>

使いたいヘルパーをカンマで区切って打ってくださいとのこと。
使いたいのが思いつかないのでそのままEnter。

Would you like this controller to use other components
besides PaginatorComponent? (y/n)
[n] >

PaginatorComponent以外のコンポーネントを使いますか?
きっとヘルパーと同じで、使いたいコンポーネントが思い浮かばないので、そのままエンターでn入力。

Would you like to use Session flash messages? (y/n)
[y] > y

setFlashでのメッセージを使いますか、とのこと。
使いますということでyを指定。

---------------------------------------------------------------
The following controller will be created:
---------------------------------------------------------------
Controller Name:
        Users
Components:
        Paginator, Session
---------------------------------------------------------------
Look okay? (y/n)
[y] > y

OKです。焼きまーす。yを指定。

Baking controller class for Users...

File <code>/home/[ユーザ名]/www/[ケーキの名前]/app/Controller/UsersController.php</code> exists
Do you want to overwrite? (y/n/q)
[n] &gt; y
Wrote <code>/home/[ユーザ名]/www/[ケーキの名前]/app/Controller/UsersController.php</code>
PHPUnit is not installed. Do you want to bake unit test files anyway? (y/n)
[y] &gt; y

You can download PHPUnit from http://phpunit.de
Bake is detecting possible fixtures...

Baking test case for Users Controller ...

File <code>/home/[ユーザ名]/www/[ケーキの名前]/app/Test/Case/Controller/UsersControllerTest.php</code> exists
Do you want to overwrite? (y/n/q)
[n] &gt; y
Wrote <code>/home/[ユーザ名]/www/[ケーキの名前]/app/Test/Case/Controller/UsersControllerTest.php</code>

既に前回、UsersController.phpを焼いてもらってあったので、上書き確認が出ています。全てyで上書きしました。
焼き上がり!

焼き上がりの確認

早速コントローラを見てみましょう。

<?php
App::uses('AppController', 'Controller');
/**
 * Users Controller
 *
 * @property User $User
 * @property PaginatorComponent $Paginator
 * @property SessionComponent $Session
 */
class UsersController extends AppController {

/**
 * Components
 *
 * @var array
 */
	public $components = array('Paginator', 'Session');

/**
 * index method
 *
 * @return void
 */
	public function index() {
		$this->User->recursive = 0;
		$this->set('users', $this->Paginator->paginate());
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->User->exists($id)) {
			throw new NotFoundException(__('Invalid user'));
		}
		$options = array('conditions' => array('User.' . $this->User->primaryKey => $id));
		$this->set('user', $this->User->find('first', $options));
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		if ($this->request->is('post')) {
			$this->User->create();
			if ($this->User->save($this->request->data)) {
				$this->Session->setFlash(__('The user has been saved.'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
			}
		}
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->User->exists($id)) {
			throw new NotFoundException(__('Invalid user'));
		}
		if ($this->request->is(array('post', 'put'))) {
			if ($this->User->save($this->request->data)) {
				$this->Session->setFlash(__('The user has been saved.'));
				return $this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
			}
		} else {
			$options = array('conditions' => array('User.' . $this->User->primaryKey => $id));
			$this->request->data = $this->User->find('first', $options);
		}
	}

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

綺麗に焼けてます。
ソースが見えるから勉強になりますね。
ちゃんとメッセージの処理はsetFlashで処理されていたりしています。

ad

関連記事

logo

[CakePHP]bakeコマンドでModelを作る

CakePHP関連まとめページはこちら。 bakeコマンドを使う チュートリアルとか本とか読んで

記事を読む

Wannabenote

[CakePHP]SNSを作ろう CakePHPインストール編

SNSを作ろうまとめページはこちら はい。こないだのsymfonyはなかったことにします。

記事を読む

Wannabenote

[PHPStorm]SNSを作ろう IDE環境作成編

SNSを作ろうまとめページはこちら。 前回の続き、というか閑話休題。 プログラムをガチで

記事を読む

cakephp

[CakePHP, jQuery]Ajaxでメッセージをゆっくり消す

SNS作りをさぼってるわけじゃないんですよ。 作るだけなら簡単だけど、ブログにまとめる時間がないだ

記事を読む

logo

[CakePHP]bakeコマンドでControllerを作る

CakePHP関連まとめページはこちら。 今度はControllerをbakeコマンドで焼き上げて

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編2~MVCの作成~

SNSを作ろうまとめページはこちら。 前回の続き。 ブログ編は基本的にこちらのチュートリ

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編4~閲覧画面作成~

SNSを作ろうまとめページはこちら→SNSを作ろうまとめページ SNSを作ろう ブログ編3~投

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編3~投稿画面作成~

SNSを作ろうまとめページはこちら→SNSを作ろうまとめページ 前回(SNSを作ろう ブログ編

記事を読む

Wannabenote

[CakePHP]bakeコマンドでViewを作る

CakePHP関連まとめページはこちら。 最後はViewを焼いてみます。 Viewを焼き上げ

記事を読む

Wannabenote

[CakePHP]SyntaxHighlighterを利用する

ソースを綺麗に表示する このサイトでも利用しているのですが、ソースを表示して、かつ予約語などを別色

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑