NetBeans IDEは、全然使いこなせていませんが、便利機能を
ひとつ紹介。
それは、ソースの差分表示です。
エディターでソースの隣にある履歴をクリックしたあと、いつ時点と
比較するのか選択します。
そうすると、その時点と偏在の差分が瞬時に表示されます。
まめにバックアップは取られていると思いますが、取り忘れや、
バックアップの習慣がない人には便利な機能と思います。
SyntaxHighlighter
2013年2月20日水曜日
2013年2月19日火曜日
NetBeans IDEとCakePHP $this の内容
PHPの変数でよく使う「$this」。
これはクラス内変数を使用するときの修飾子とでも
理解すれば良いのだろうか?
ソース上に「debug($this)」と1行追記することで
その中身を知ることができます。
見えるかすることで、疑問も増えるかも知れませんが、
理解も深まるのではないでしょうか。
debug追加ソース例
・他のページにリダイレクトすると見えなくなるのでコメントにしておきます。
実行結果
これはクラス内変数を使用するときの修飾子とでも
理解すれば良いのだろうか?
ソース上に「debug($this)」と1行追記することで
その中身を知ることができます。
見えるかすることで、疑問も増えるかも知れませんが、
理解も深まるのではないでしょうか。
debug追加ソース例
・他のページにリダイレクトすると見えなくなるのでコメントにしておきます。
実行結果
2013年2月15日金曜日
NetBeans IDEとCakePHP データ更新(3/3)
3.もう少しプログラムらしく
ここまで、きたら全体を見直して、プログラムっぽく動作させてみましょう。
3-1.Viewの見直し
3-1-1. index.ctp
先程、cssの説明の時に使用した「ビザのオーダーリスト」のViewです。
<li><?php echo $this->Form->input('№:',array('size'=>2)); ?></li>
は、編集、削除で指定するidを入力するエリアです。
3-1-2. add_order_list.ctp
データ追加用の画面です。言い忘れていましたが、画面の作成は「Form Helper」を使用しています。入力のタイプとして「select」と「radio」を作成してみました。
3-1-3. edit_order_list.ctp
データ更新用の画面です。データ追加の画面とほぼ同一です。実行時には修正前データが画面 表示されます。
3-1-4. delete_order_list.ctp
データ削除前の確認用画面です。一応表示専用にしてみました。
3-2.Controllerの見直し
最後にプログラム「OrderListsController.php」の見直しです。
このプログラムは、画面に対応する4つのfunctionで構成されています。
3-2-1. function index()
(1)まず入力ボタンがクリックされたかの確認をしています。
if ($this->request->is('post') || $this->request->is('put')) {
のように’post’と’put’の両方を聞くのが常とうのようです。
(2)index.ctpで各ボタンにつけた名前を順番に聞いていき、そのボタンにあった処理を実行します。
if(isset($this->request->data['list_add'])) {
(3)編集や削除のボタンをクリックされた場合、該等のidをセットしてリダイレクトします。
$list_number = $this->request->data[OrderList]['№:'];
$this->redirect('../OrderLists/DeleteOrderList/'.urlencode($list_number));
(4)ボタンがクリックされていなかった場合、初期設定を行い登録済みデータを画面に出力します。
ボタンクリックの判定をクリックされたときとするか、クリックされていなかったときとするかは、プロジェクト内で統一しておいた方が良いと思います。
3-2-2. function AddOrderList()
(1)入力内容をデータベースに保存後、インデックス画面にリダイレクトしています。インデックス画面で登録内容が確認できます。
$this->OrderList->save($this->request->data);
$this->redirect(array('action' => 'index'));
※このとき、意図的にボタンクリックの判定を’post’のみにしてみましたが、特に問題はありません でした。
3-2-3. function EditOrderList($id) と function DeleteOrderList($id)
(1)URLで渡された’№:’を’$id’で受け取ります。
$this->OrderList->id = $id;
(2)入力内容をデータベースに保存または削除後、インデックス画面にリダイレクトしています。インデックス画面で更新結果が確認できます。追加と更新は同じ構文となります。
$this->OrderList->save($this->request->data); ・・・更新
$this->OrderList->delete($this->request->data('OrderList.id')); ・・・削除
$this->redirect(array('action' => 'index'));
(3)ボタンがクリックされていなかった場合、idで指定されたデータを画面に表示します。
更新も削除も構文は同じです。
$this->request->data = $this->OrderList->read(null, $id);
下の枠をクリックするとソースを展開します
誤り等のご指摘がありましたら、何なりとコメントください。
よろしくお願いします。
【重要】 当プログラムは入力項目のチェックをしておりませんので、悪意あるスクリプトなどを入力されると何が起きるかわかりません。公開を考えている方は、「Sanitize」等を使用して不正なデータを取り込まないようにしてください。
(2/3)へ
2013年2月14日木曜日
NetBeans IDEとCakePHP データ更新(2/3)
1-3-1-2 編集と削除機能
ここまできたら、編集と削除も作ってみましょう。下記ソースを参考にしてください。
内容は、編集の場合「指定(id)のデータを画面に表示し、修正内容が送られてきたら、保存してindex画面を表示する。指定(id)データがない場合は、空画面を表示する。」削除の場合は、保存しての部分が削除してに変わるだけです。
アドレス欄には「http://localhost/PhpProject1/OrderLists/EditOrderList/1」
または「http://localhost/PhpProject1/OrderLists/DeleteOrderList/1」のように入力してください。
最後の「1」がレコードのidとなります。データが3件あって3件目を削除する場合は、
「http://localhost/PhpProject1/OrderLists/DeleteOrderList/3」となります。
2.フォームを作成する。(レイアウトとcss)
2-1. 今まで見てきた画面は、CakePHPで用意されているレイアウト「default.ctp」とcss「cake.generic.css」を利用して出力されていました。
これから、OrderList用のレイアウトとcssで画面を作成していきます。
2-2 CakePHPレイアウトの構成を表すファイルとデザインを表すファイルを分けています。
2-2-1 レイアウト構成
今回はヘッダー、ボディ、フッターの構成を作成します。
「View」を展開して「Layouts」フォルダーで右クリックして「新規」から「OrderList.ctp」を作成しましょう。
<head>~</head>は、HTMLのヘッダー部です。$変数はプログラムで値をセットします。
「echo $this->html->css('OrderList');」は、デザインに関する記述ですが、あとで説明します。
<body>~</body>の中にレイアウトを定義します。
・<div id="header">は、ヘッダー部
・<div id="content">は、データ部
・<div id="footer">は、フッター部
の構成とします。データ部以外は任意であり、なくてもかまいません。また、$変数については、プログラムで値をセットしますが、データ部の「$content_for_layout」は、各画面の「.ctp」ファイルから展開されます。
2-2-2 デザイン設定
先程出てきた「css」ファイルについてです。cssとは?についての説明は省略させていただきます。
画面のデザインはデフォルトの「cake.generic.css」を使用していましたが、もう少し実用的な画面になるようにしたいと思います。
ここで、重要なのは、画面イメージを持っておくことです。こういう画面を出すためには、どういった
cssが必要かという観点からcssを作成します。
まずは「webroot」を展開して「css」フォルダーで右クリックして「新規」から「OrderList.css」を
作成しましょう。
以下の画面イメージを使用して説明します。
2-2-2-1 テーブル
Tableの構成を定義します。ここでは、スタイル・ビルダーを使用しました。私のようにデザイン力のない場合、重宝いたします。「th」「td」も同様に作成します。
2-2-2-2 submitボタンを横に並べる。
まず、「index.ctp」に以下の部分を追加します。
次にcssの方に以下の内容を追加してください。
#action_group ul li {
list-style-type: none;
float:left;
}
2-2-2-3 radioボタンを横に並べる。
これは、以下の内容を追加することでできます。
.input radio {
display: inline;
text-align: left;
2-2-2-4 完成した「OrderList.css」。下の枠をクリックするとソースを展開します。
2013年2月13日水曜日
NetBeans IDEとCakePHP データ更新(1/3)
Ⅱ フォーム
まだデータが0件なので、データの追加、編集、削除の機能を追加していきます。
1.追加、編集、削除のプログラム
1-1 Viewの作成
order_listsテーブルから入力が必要となる項目について定義します。
このうち、id、created、modifiedは、自動設定項目なので、画面項目からはずします。
・id:レコード番号として連番が振られる。
・created:レコード追加時の年月日日時分秒がセットされる。
・modified:レコード追加またはレコード編集時の年月日日時分秒がセットされる。
1-2 Viewの作成
・ファイル名はアンダースコア型ですので、追加のViewファイル名は「add_order_list.ctp」とします。
・create(テーブル名)、input(入力項目名)、end(送信ボタン)
これで入力画面ができました。同じように編集と削除も作成してください。ファイルだけ作成して内容はまったく同じでもかまいません。一応1行目と2行目は修正しておいた方がのちのち分かりやすいかもしれません。
・編集用ctpファイル:edit_order_list.ctp
・削除用ctpファイル:delete_order_list.ctp
1-3 Controllerの作成(機能追加)
1-3-1 追加機能
public function index($id = null)の次のファンクションとしてpublic function AddOrderList()を追加します。これは、Viewのファイル名が「add_order_list.ctp」となっているからです。
下にサンプルソースがありますが、これは、「データが送信されたらテーブルに書いてindex画面を出力する。」という内容になっています。
1-3-1-1 追加機能
これでもう実行できます。ツールバーのアイコンをクリックして実行してみましょう。
アドレス欄が下記のようになっている場合、「OrderLists/AddOrderList」を面倒ですが、手打ちしてください。
出てきた画面は、なんともみっともない画面ですが、まだ何も成形していないのでしょうがないと思ってください。しかし、機能としては問題ないので実際にデータを入力してみてください。
※データチェックを行っていないため、異常データを入力すると予期せぬ事態が起きる場合があります。
実行結果画面
(2/3)へ
2013年1月31日木曜日
NetBeans IDEとCakePHP プログラム編(4/4)
3-3. Controllerを作成する。
・ナビゲータの「Controller」を右クリックして「新規」→「PHPファイル…」をクリックします。

・ファイル名に「OrderListsController」と入力します。確認後【終了(F)】をクリックします。
※Contorollerのファイル名は、Viewフォルダー名称に“Contoroller”をつけたものとなります。
・OrderListsテーブルの内容をすべて表示するプログラムを書いてみます。
「public function index($id = null)」の「index」がViewで作成した「index.ctp」と連携しています。
4.ここまでのまとめ
※Controllerのファンクション「AddOrderList」とViewのファイル「add_order_list」が対応しているのが分かりますね。
4-2 MVCの関連図
・ナビゲータの「Controller」を右クリックして「新規」→「PHPファイル…」をクリックします。

・ファイル名に「OrderListsController」と入力します。確認後【終了(F)】をクリックします。
※Contorollerのファイル名は、Viewフォルダー名称に“Contoroller”をつけたものとなります。
・OrderListsテーブルの内容をすべて表示するプログラムを書いてみます。
「public function index($id = null)」の「index」がViewで作成した「index.ctp」と連携しています。
4.ここまでのまとめ
4-1 CakePHPの規約
| № | オブジェクト | 種類 | 型 | 単数複数 | 拡張子 | 例 |
| 1 | テーブル | - | アンダースコア型 | 複数形 | - | order_lists |
| 2 | Model | ファイル | キャメル型 | 単数形 | php | OrderList |
| 3 | View | フォルダー | キャメル型 | 複数形 | - | OrderLists |
| 4 | ファイル | アンダースコア型 | 単数形 | ctp | index、add_order_list | |
| 5 | Controller | ファイル | キャメル型 | - | php | OrderListsController |
| 6 | ファンクション | キャメル型 | 単数形 | - | index、AddOrderList |
4-2 MVCの関連図
5.実行してみる
ブラウザを起動して下記のアドレスを入力してみてください。
データが0件なので下図のような画面が表示されます。
http://localhost/PhpProject1/OrderLists
これで、MVCモデルは終わりです。
次回は、フォームを使ってデータの登録・編集・削除を行ってみます。
2013年1月30日水曜日
NetBeans IDEとCakePHP プログラム編(3/4)
3-2. VIEWを作成する。
Viewは、Viewフォルダー直下にファイルを置くのではなく、複数形のキャメル型表記でフォルダーを作成し、その配下にファイルを作成します。
3-2-1. フォルダーの作成 ・ナビゲータの「View」を右クリックして「新規」→「その他…」をクリックします。
・カテゴリ(C)で「その他」をクリックしてファイル・タイプ(F)から「フォルダ」を選択し「次>」をクリックします。
・ファイル名に「OrderLists」と入力します。確認後【終了(F)】をクリックします。
3-2-2. ファイルの作成
・VIEWのファイル名はxxxxx.ctpのように拡張子が「ctp」となります。 この仕様はCakePHP独自のものなにで、通常のEditerでは、編集できません。 まずは、この拡張子をNetBeansが認識するようにします。
3-2-2-1 ファイルの関連付け
(1)メニューバー「ツール(T)」から「オプション(O)」を選択します。
(2)オプション画面の「その他(M)」から「ファイル」タブを選択します。
(3)「ファイル拡張子(E):」の「ctp」と入力し、「関連付けられたファイル・タイプ(MINE)(T):」 は「PHPファイル(text/xx-php5)」を一覧を表示し選択します。
(4)内容を確認し「OK」をクリックします。
3-2-2-2 Ctpファイルの選択
・ナビゲータの「View」から「OrderLists」を右クリックして「新規」→上から2個目の「Empty Ctp file…」をクリックします。 2個目を選択する理由は、1個目の「Empty Ctp file…」は、CakePHP1.X用と思われるためです。
3-2-2-3 関連付け後のファイルが選択できない場合
・もしも「Empty Ctp file」が見当たらない場合、「その他」を選択してください。 上記設定ができた場合は、3-2-2-5へ跳んでください。
3-2-2-4 ファイルタイプからの選択
・カテゴリ(C)で「CakePHP2 Framework」をクリックしてファイル・タイプ(F)から「Empty Ctp file」を選択し「次>」をクリックします。
3-2-2-5 ファイル名入力
・ファイル名に「index」と入力します。確認後【終了(F)】をクリックします。
トップページ以外の場合、名前は、単数形のアンダースコア型となります。
仮にControllerにOrderListを表示するGetOrderList()という関数があった場合Viewのファイル名は「get_order_list.ctp」となります。
3-2-2-6
・練習ですので、この段階では、最低限のHTML文を作成します。
ここまでViewの説明でした。
登録:
投稿 (Atom)




























