画像アップロード機能追加とバリデーションについて

cakephpで画像アップロード機能を追加しました。その参考にしたページは

CakePHP1.3で作る会員管理システム(17) 画像アップロード

このとき、バリデーションに「imgType」という独自のルールを当ててるんですが
このfunction imgType というのを、私は間違えて「コントローラー」に入れてしまいました。

「モデル」に入れるんですね。

また、「app_controller.php」と同じで「app_model.php」というのも、コピーして「app」階層に置けるそうです。
というメモメモ。

新規登録したら、Call to a member function setFlash() on a non-object になる。

使用しているのはcakephp1.3です。
cakebakeでモデルとか作ったし、大丈夫ーとか思っていたら、新規登録したら

Call to a member function setFlash() on a non-object

エラー。

app_controler.phpに「var $components = array(‘Session’);」を追加したら直りました。

ひとつ前の記事で、Authを呼び出しているから、正確には

var $components = array('Auth','Session');

です。

cakephpで管理画面を作成する

参考にした記事は以下です。本当にありがとうございます!
CakePHPの「ログイン機能の導入」以下です。

いろんなサイトを参考にしましたが、上のサイトが一番自分にとってはわかりやすくて、うまくいきました。
パスワードの暗号化など、本当に助かりました。

やりたかったのは、「admin」がついていたら、ログインしているかどうかを確認して、
してなかったらログイン画面に入り、ログインした人だけadminの領域を触れるというようなことです。とりあえず権限とかはなしで。
Continue reading

cake bakeでモデルが作れなくて

windows使用。xamppの環境でcakephpによるWEBアプリを作成中。
コマンドプロンプトを立ち上げて、cake bakeでモデルを作ろうとするんだけど、

windowsのシステムの環境変数のパスを設定して、PHPのある場所を設定。

cake bake

って打っても、データベースを作る画面しか出なかったんですが、以下の様に打ち込んだら出るようになりました。

D:\xampp\cake\cake\console>cake bake -app D:\xampp\htdocs\test_project

上は
cake1.2でbakeを使うからの引用で、実際には自分の環境に合わせたパスを書くのですが……。

windows+xampp+cake1.3 の環境で、cake bakeを動かすのに参考にさせていただいたページは以下の通りです。ありがとうございます!!

cakephpを使って10分でCMSを作る方法
[CakePHP]え?おしゃべり感覚でできる?bakeで作る高速webアプリケーション開発!
[CakePHP]windowsの開発環境で気持ちよくbakeする方法メモ

(追記)
やはりエラーが多発してしまった。
コマンドプロンプトで、cd を使って、appまで一つずつあけてからcakebakeをすると、うまく動いた。
でも、Modelがうまく作れないのはなんでかなぁ。

CakephpでUndefined variable: htmlエラー

cakephpをちょっといじり始めて、とりあえずCakephpブログチュートリアルを参考にちょっとずつ作っていた。
Viewのところまでたどり着いて、テストをすると

Undefined variable: html

というエラーが。
11.1.8 Postビューの作成
のテンプレート内の

<?php echo $html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>

の$html->link部分、htmlヘルパーが呼び出せてない?っぽい?

controllerのファイルに

var $helpers = array('Html');

を追加してみたけど、だめでした。小一時間以上いろいろと調べて……やっぱりよく分からない……。

ちゃんとしたプログラマーさんに頼んで、見てもらったところ……

<?php echo $this->html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>

$thisを追加したら治りましたー!!!!

チュートリアルが間違ってたのか(英語版は正しかったので、日本語版の打ち間違い?かな)。ちなみに

var $helpers = array('Html');

は不要でした。
Continue reading