【PHP】フレームワーク CakePHP 4ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/06/20(金) 01:24:40ID:???10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
Cookbook :: 1.2 Collection :: マニュアル
http://book.cakephp.org/ja
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0693nobodyさん
2008/11/21(金) 18:52:01ID:???scaffoldなら
cake/libs/view/scaffolds のファイルを書き換えたら良かったはず
bake も利用しているかもよ
0696nobodyさん
2008/11/22(土) 16:36:33ID:qo4yapkz暗号化されたパスワードを復号化する時って、どんなして処理してます?
0697nobodyさん
2008/11/22(土) 18:09:23ID:???だったら複合化は無理だろ
可逆暗号に変える必要があるが、セキュリティを落としてまで複合化する必要性ってなんだ?
0698696
2008/11/22(土) 18:25:21ID:qo4yapkzユーザ自身にパスワードの変更をさせたいのですが、
入力フォームのデフォルトに、復号化した値を入れたいなーと思ったんです。
0699nobodyさん
2008/11/22(土) 21:10:29ID:???controller.php のソースで、
$this->{$this->modelClass}
という記述がよく見つかります。
これは何をしているのでしょう?
そもそも、$this->{何か} という記述がどのような動作になるのか、わかりま
せん。教えていただけないでしょうか?
0700nobodyさん
2008/11/22(土) 21:13:10ID:???$this->プロパティ名 なら、どういう動作かはもちろんわかります。
$this->{何か評価される式} というのが、どういう振る舞いをするのかわから
ないのです。
ためしにこんなことをしてみましたが、エラーになりました。
$x = "hoge";
$this->{$x}; // エラー
0701nobodyさん
2008/11/22(土) 21:19:42ID:???0702nobodyさん
2008/11/22(土) 21:31:35ID:???マニュアルとは、PHPマニュアルのことでしょうか?
一応見たのですが、該当箇所がわかりませんでした。
http://search.net-newbie.com/php/language.oop5.html
ちなみにさっきの件は、少し不正確でした。$this だとうまく行きますが、そ
れを代入した変数だとうまく行きません。
class Test {
; ;var $hoge = 1;
; ;function fuga() {
; ; ; ;$x = "hoge";
; ; ; ;var_dump($this->$x);
; ;}
}
$test = new Test();
$test->fuga(); // int(1)
var_dump($test->"hoge"); // error
$thisだけ、プロパティ名自体を変数にできるようです。
0703nobodyさん
2008/11/22(土) 21:32:18ID:???0704nobodyさん
2008/11/22(土) 21:32:34ID:???0705nobodyさん
2008/11/22(土) 21:38:19ID:???可変変数って、$$x という風に、$が多重になっているものだと思うのですが…。
http://search.net-newbie.com/php/language.variables.variable.html
>>702のコードには、$$ は一つもありません。
0706nobodyさん
2008/11/22(土) 21:42:30ID:???あるじゃん
0707nobodyさん
2008/11/22(土) 21:49:23ID:?????すみませんが、おっしゃることがわかりません。
grep "$$" で一行も返ってこないのですが、それでも可変変数なのですか?
そして、もし単なる可変変数なのなら、
class Test {
var $hoge = 1;
function fuga() {
$x = "hoge";
var_dump($this->$x); //これはOK。
}
}
$test = new Test();
$test->fuga();
$x = "hoge"
var_dump($test->$x); // これはNG.
こうなるのはなぜなのでしょう?
0708nobodyさん
2008/11/22(土) 21:52:16ID:???この部分が可変なんだろ
0709nobodyさん
2008/11/22(土) 22:04:46ID:???字面しか理解できない阿呆の典型だな
0710nobodyさん
2008/11/22(土) 22:22:44ID:???ここのnote欄に、膨大な試行錯誤が見つかりました。
可変変数には、undocumentedな振る舞いがたくさんあるようです。
どうやらこれが答えですね。
こういうundocumentedな挙動って、いつ廃止されるかわからないものでしょう
に、フレームワークに利用するとはすごい話だと思うんですが、考えてみたら
documentedな関数の振る舞いもPHPはしょっちゅう変わるんでしたっけ。
0711nobodyさん
2008/11/22(土) 22:25:32ID:???0712nobodyさん
2008/11/22(土) 23:27:45ID:???書き方も間違ってるし変数のスコープが分かってない。
コンストラクタやセッター的なもので
オブジェクトから見える場所に代入してないんだから
fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
0713nobodyさん
2008/11/22(土) 23:46:37ID:???何のエラーが出るのか、そのエラーは何が原因なのか、そのエラーの解決方法は何か
って辿っていくのがプログラミングのコツだよ
0715696
2008/11/23(日) 04:48:20ID:l1Rm9lxOうーん、まぁそうですね。
しかしAuth compornent使うと、パスワード一覧表とか表示するのも結構大変てことなんすかね
0716nobodyさん
2008/11/23(日) 05:06:33ID:???0717nobodyさん
2008/11/23(日) 06:16:38ID:???array('hogehoge' => current_date)
array('hogehoge' => '日付')
みたいな感じだと `hogehoge` = `日付` みたいにしかならないよね?
current_dateはともかく日付指定でも不等号条件は使えないのかな?
0718696
2008/11/23(日) 06:19:23ID:???いえ、仕事じゃないです。ていうか、このレベルでphpの仕事出来ないかと…
でもあれですね、こういうことは普通しないってことは解りましたです。
もし、やりたいなら入力時に別のカラムに生のパスワード入れる方法を思いつきましたので、
そうすることにします。皆さんお相手くださってありがとうございました。
0720nobodyさん
2008/11/23(日) 07:45:49ID:???ズバリです
ありがとうございます
('hogehoge' => '<= current_date')
とか最初やってて悩んじゃいました
0721nobodyさん
2008/11/23(日) 12:17:59ID:???AuthComponentは、暗号化の方法を変えられるよ。
もし(セキュリティ的に問題なくて)、パスワードを可逆にしたいなら。
ttp://d.hatena.ne.jp/ngtn/20080311/1205245777
0722nobodyさん
2008/11/23(日) 12:39:53ID:???Controller::paginate() の第一引数 $object が与えられなかった場合、
paginate()の戻り値は、controllerのデフォルトのmodelのインスタンスになる
と思うのですが、それって公式なドキュメントのどこに書いてあるのでしょうか?
APIドキュメントには、$object = null, と書いてあるだけで、実際nullだった場合の
paginate() の挙動については書かれていません。
http://api.cakephp.org/class_controller.html#6f79c1eed018894aede112c294087345
0723nobodyさん
2008/11/23(日) 12:54:38ID:???ソースはそうなってるね。
00882 } elseif (empty($object) || $object == null) {
00883 if (isset($this->{$this->modelClass})) {
00884 $object = $this->{$this->modelClass};
ドキュメントが必要?
0724nobodyさん
2008/11/23(日) 13:28:06ID:???やっぱりソースを読むしかないのでしょうか?
> ドキュメントが必要?
あってほしいですね。ドキュメントに載ってない機能って、いつ廃止変更され
るかわからないから。
0725nobodyさん
2008/11/23(日) 17:29:12ID:???詳細なドキュメントあってもなあ
該当記事を探すのに時間かかるし、英語だら翻訳とか余計手間だ
0726nobodyさん
2008/11/23(日) 17:30:39ID:???> >>707
> 書き方も間違ってるし変数のスコープが分かってない。
>
> コンストラクタやセッター的なもので
> オブジェクトから見える場所に代入してないんだから
> fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
別に間違っていないと思うのですが。
最終行の$xは、その一行前で定義されたグローバル変数です。
function fuga() の中で定義されているローカル変数とは
別のものです。
$y = "hoge"
var_dump($test->$y); // これはNG.
変数名を変えたら紛らわしくなかったかもしれません。
0728nobodyさん
2008/11/23(日) 17:35:34ID:???ドキュメントに載っていようが、RCの場合は変更されてもしょうがない。(事実findをはじめ変更多々あり)
paginateは、もう変更は無いだろうが
0729nobodyさん
2008/11/23(日) 17:37:43ID:???該当と思われるスレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
PHPでOOP
http://pc11.2ch.net/test/read.cgi/php/1172205352/
0730nobodyさん
2008/11/23(日) 17:44:50ID:???確かにスレ違いなので、こちらに移りましょう。
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
0731nobodyさん
2008/11/23(日) 17:44:59ID:???0732nobodyさん
2008/11/23(日) 17:51:46ID:???それはわかってますし、>>726でも「ローカル変数」って書いてます。
取り合えず>>730のスレにお越しください。
0733nobodyさん
2008/11/23(日) 18:08:06ID:???0734nobodyさん
2008/11/23(日) 18:12:23ID:???顔真っ赤にした人が正解を書くのを釣るタイプ。
このタイプはもう飽きたよ。
0735nobodyさん
2008/11/23(日) 18:12:48ID:???> 喧嘩がしたかったようだね('A`)
なんでそうなるのかぜんぜん理解できない。
誤解を訂正して誘導しただけじゃん。
0737nobodyさん
2008/11/24(月) 17:47:59ID:V2OhDKFB書けるのか、サンプルをご存知のかたいませんか??
0738nobodyさん
2008/11/24(月) 18:21:36ID:???0739nobodyさん
2008/11/24(月) 23:29:29ID:???0740nobodyさん
2008/11/26(水) 15:03:25ID:???/cake/app/webroot/img/hoge/icon/aaa.gif
Viewではヘルパーを使って、$html->image('hoge/icon/aaa.gif', array('border' => 0))として呼んでいます。
これをPHP4が乗っているサーバー上で実行すると、画像が表示されず、
ソースを見てイメージタグのsrcに指定されているアドレスを直接叩くと下記のエラーが出てしまいます。
Missing Controller
Error: ImgController could not be found.
また元々/cake/app/webroot/img/にあった、cake.power.gifは正常に画像が表示され、
イメージタグのソースに表示されているアドレスを直接叩いても画像が表示されています。
ローカル環境では事情によりPHP5を使用しているのですが、こちらでは正常に表示されています。
PHP4だとこの画像管理方法は出来ないのでしょうか?それとも設定でしょうか?
0741740
2008/11/26(水) 15:17:25ID:???0742nobodyさん
2008/11/26(水) 16:03:06ID:???htaccess は、正常に動作しているの?
webroot/img が存在するなら、index.phpに飛ばない(missing controllerにならない)
php4だと/img 以下にディレクトリを作れないということはないね。少なくとも
0743nobodyさん
2008/11/26(水) 16:09:19ID:???追加
webroot/hoge が存在していなくても、missing controller にはなる
(ディレクトリ名のtypoとかも、あやしいかな)
0744nobodyさん
2008/11/26(水) 16:10:13ID:???webroot/img/hogeだった
0745740
2008/11/26(水) 16:30:50ID:???htaccessは正常に動作していると思っています。
理由は、http://www.hogehoge.ne.jp/php/cake/img/cake.power.gif
だと正常にアクセス出来ているからです。
これをhttp://www.hogehoge.ne.jp/php/cake/img/board/icon/aaa.gif
にすると、Missing Controllerになるので、違う原因だと考えていました。
この考え方自体が変ですかね・・・。
.htaccessは元のファイルに下記の様にRewriteBaseを追加しています。
cake直下 RewriteBase /php/cake
cake/app直下 RewriteBase /php/cake/app
cake/app/webroot直下 RewriteBase /php/cake/app/webroot
dispatchがPHP4だとうまく動かないのかと考えていましたが違うみたいですね。
後、typoはローカルで動作しているファイルを全てアップロードしているので無いと思います。
実際にFTPで確認しても間違ってなさそうでした。
0746740
2008/11/26(水) 16:46:48ID:???ファイル名が全角なのがダメみたいでした。
$form->selectに画像入れたフォルダ配下のファイル名から拡張子を除いた物を表示させて
アイコンを選択させようと手抜きをしたのがダメでした。
ローカルで出来たのはWindowsだからですかね。(サーバーはLinux)
0747nobodyさん
2008/11/26(水) 16:51:43ID:???やっぱりhtaccessっぽいね。
webroot直下のやつを見直すと幸せになれそうな気がする
RewriteBaseは必要なのかい?
0748740
2008/11/26(水) 17:36:45ID:???ありがとうございます。
調べてみて、webroot直下のhtaccessに、下記を追加することで、「Missing Controller」は出なくなりました。(404エラーになります)
RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$
原因はやっぱり日本語ファイル名で、これをffftpでアップロードしていたことだと思います。
UTF-8対応版のftpクライアントでアップロードすることで、正常にアクセス出来る様になりました。
RewriteBaseはググってみて、共有サーバーで使用する時の設定に書かれていたので無いとダメなのかと思って入れています。
0749nobodyさん
2008/11/26(水) 19:22:08ID:???debugモードを0にしたらセッションが切れる!みたいな
現象に出くわした方っています?
0750nobodyさん
2008/11/26(水) 21:58:19ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=817&forum=9
これかな?
0753nobodyさん
2008/11/27(木) 23:19:45ID:???困ってしまったんですが、
css を webroot/css 配下においた時、views/layouts/default.ctp で その css を読み込ませたい
のですが、これはヘルパを使うべきですか?
<link href="css/base.css" rel="stylesheet" type="text/css" />
こんな感じで直書きしてもよんでこないのですが、これは /css/base.css のように絶対パスで
書くべきなのか、ヘルパをかますべきなのか、はたまた何か設定がまずいのが
よくわかっていません。
アドバイスをお願いします。
0754nobodyさん
2008/11/28(金) 00:28:08ID:dURk+lTo>これは /css/base.css のように絶対パスで
試してみた?おそらく結果でわかるはず。
また、ヘルパ使うかどうかはどっちでもいいような。 個人的にはヘルパ使うけど。
0755nobodyさん
2008/11/28(金) 02:37:47ID:???0756nobodyさん
2008/11/28(金) 03:12:08ID:8hLcD3C81.2が遅いので1.1を新規でも使ってる人はいる?
0757nobodyさん
2008/11/28(金) 03:16:26ID:???パフォーマンスの改善がメインでしょ1.2て
0758nobodyさん
2008/11/28(金) 03:17:57ID:???1.2がRCだから1.1つかってる
0759nobodyさん
2008/11/28(金) 03:40:07ID:???このバージョンではこうする、とかじゃなくて
常にこうすれば確実にバージョンアップ出来るみたいな
0760nobodyさん
2008/11/28(金) 06:36:27ID:???1.1のマニュアルに比べて日本語が変なところが多い
コピーしてきたらいいのにね
0761nobodyさん
2008/11/28(金) 14:02:15ID:???<?php e($html->css('my_css_1')); ?>
<?php e($html->css('my_css_2')); ?>
を出力した場合, HTMLソース上では改行されずに出力されます.
動作に支障はないとはいえ気持ち悪いので, 改行させたいのですが
何かよい方法はないでしょうか?
0763nobodyさん
2008/11/28(金) 16:02:50ID:???1つうまくいかない事がありますのでご教示頂けるとうれしいのです。
mod_rewrite は有効にし、.htaccess も設定しました。
/htdocs/test/ 配下を環境とします。
/htdocs/test/app/webroot/js/ にいくつか javascript を入れました。
/htdocs/test/app/views/layouts/post.ctp を作り、その中で、
<script src="js/hoge/hoge.js" type="text/javascript"></script>
のような記述がしてあります。
次に post という、コントローラ、ビュー、モデルが作ってある状態で、
post_controller.php には var $layout ="post"; としてあります。
ここで、
http://localhost/test/post/ にアクセスすると、apache の accesslog に、
"GET /test/post/js/hoge/hoge.js HTTP/1.1" 200
とログが残ります。
どのように webroot/js/ の中身を参照すればいいでしょうか?
0764nobodyさん
2008/11/28(金) 16:12:45ID:???10個前のレスと同じじゃんね。
俺ならヘルパー使うけど。vendorsに突っ込んだJSとかCSSも読んでくれるし。
0766763
2008/11/28(金) 16:36:33ID:???そうか、css も javascript も同じ考え方なんですね。10個前のレスが同じ
問題だと理解できていませんでした。
さっそくヘルパーを調べ、使ってみました。意図したように動作しました。
ありがとうございます。
1つ不安な所があるのでちゃんと理解したいと思うのですが、
layouts や elements の中にある .ctp などで、javascript のヘルパーを使った場合、
それを呼び出す全てのコントローラーに、
var $helpers = array('Html', 'Javascript');
の記述を行なう、という事であっていますでしょうか?
0767nobodyさん
2008/11/28(金) 17:46:08ID:???app_controller.php に記述すれば全controllerで読み込まれる
'Html'は指定せずとも読み込まれる
0768nobodyさん
2008/11/28(金) 23:02:30ID:???最初の頃使いまくってたけど最近全然使わなくなった。
その代わりコンポーネントを使うようになってく。
0769nobodyさん
2008/11/29(土) 13:54:28ID:???0770nobodyさん
2008/11/30(日) 23:56:45ID:???class HogeController extends AppController {
var $name = 'Hoge';
var $uses = array("Fuga","Hage");
のようにコントローラと違うモデルを指定して
function index() {
$this->set('data', $this->paginate("Fuga"));
}
とやるとページングが使えなくなってしまうのは仕様なんでしょうか…
0771nobodyさん
2008/12/01(月) 00:30:15ID:???コントローラと同じ名前のモデルでもなる所はなるな…
scaffoldで生成しなおした画面は大丈夫だからもう一回見てみるか
0772nobodyさん
2008/12/01(月) 00:51:17ID:???1ページ内でpaginateを2つ以上やると片方死ぬのね…
0773nobodyさん
2008/12/01(月) 15:03:11ID:uBVWzlfV別途DBのライブラリ使って直接DBから検索するのが一般的なんですかね
0775nobodyさん
2008/12/01(月) 17:08:02ID:???質問の意味が理解できていないかもしれないけど、
Object にある requestAction メソッドはどう?
0776nobodyさん
2008/12/01(月) 18:58:54ID:???通常はwebroot直下にオリジナルのphpファイルは置かない。
一般的には、DB読むようなファイルなら、pages以下に持ってくる。
(必要ならURL書き換えれば良いし)
0778nobodyさん
2008/12/01(月) 23:13:14ID:???0779nobodyさん
2008/12/02(火) 10:27:07ID:???メール送信ビヘイビアってあるでしょ。
結局コントローラーで qbmailとか使わないといけないからさほど
メリットがないような気が。
英語だけならビヘイビアでいけるだろうが、日本語だからな。
文字化けが。。。
インクリメント・デクリメント以外の便利な使い道を師匠。教えて下さい。
0780nobodyさん
2008/12/02(火) 14:29:46ID:???結構下火だよね
関連開発しょぼいし
本家すら
0781nobodyさん
2008/12/02(火) 14:34:47ID:???cakephpはコード生成が弱すぎ
masterbakeやpowerbakeがあるけど本家開発に組み込まれてるわけじゃなく
バージョンアップ追いついて無いし
標準のbakeだとテーブル一つ毎にモデル作れとかフィールド一つ毎にバリデーション指定しろとかやってられん
機能少ない割にsymfonyより遅いし
0782nobodyさん
2008/12/02(火) 14:57:00ID:???0784nobodyさん
2008/12/02(火) 20:15:49ID:???コントローラに用意するとき、view は、add と edit と2つのファイルを用意すると
思います。
ただ、add の時も edit の時も入力項目は同じで、ページ遷移後の状態が、
空白か、呼び出したデータが表示されているか?程度の差しかないような画面の時でも、
add, edit の view は用意しておくものでしょうか?
それとも、add と edit の両方をまかなえる view を作って、コードで処理させるほうが
いいのでしょうか?
0785nobodyさん
2008/12/02(火) 20:40:05ID:???「僕すごい事知ってるよ」
じゃなくて具体的な例を出せ
>>783
言いに来てるのは既に仕事で使ってて使わざるを得ないからなのと
こういう事が書かれてれば最初から使わなかったってことだな
0786nobodyさん
2008/12/02(火) 21:19:32ID:???確かに参考にはなるけど。
0787nobodyさん
2008/12/02(火) 21:55:16ID:???たぶん1.2からだけど、bakeして吐き出されたviewは、editとaddを共通化している
それを知ってから、すべてのadd.ctpを削除した
admin_edit とかもすべて共通化したら、viewの数が激減してすっきりしたよ
0788nobodyさん
2008/12/02(火) 23:36:54ID:???0789784
2008/12/02(火) 23:43:37ID:???情報ありがとうございます。1.2 を使っているので早速 bake してみましたが、
add, edit は別にはきだされました…。
1.2.0.7692 なので、最新だと思うのですが…。
0790nobodyさん
2008/12/02(火) 23:58:07ID:???どっちか消してどっちかだけ使えば?って話じゃないの?
0791nobodyさん
2008/12/03(水) 01:04:53ID:WkUpG3Q2んんー、ほんのりオシッコの味がするよ!!
0792nobodyさん
2008/12/03(水) 01:06:12ID:???■ このスレッドは過去ログ倉庫に格納されています