【PHP】フレームワーク CakePHP 12ホール目【笑】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/07/01(金) 16:33:46.28ID:???CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
0286nobodyさん
2011/08/26(金) 13:40:06.61ID:???左に各ページに飛ぶボタン、右に各ページを作ってるわけさー
で、ログイン処理行ってて、左にログアウトボタンをつけて
echo $form->create('MUser',array('action'=>'logout','target'=>'_top'));
echo $form->end('logout');
でちゃんとログイン画面に戻るんだけど
タイムアウトの場合、左のボタンを押したら
右側だけがログイン画面にいっちゃう
で、ログインしようとすると、フレームが増える(左左右みたいに)
タイムアウトの場合も1画面のログイン画面に戻したいんだけど
何か良い案はないですかね?
0287nobodyさん
2011/08/26(金) 16:47:07.40ID:???0288nobodyさん
2011/08/26(金) 17:08:32.51ID:???どうやってんのかサッパリだわ。
0289nobodyさん
2011/08/26(金) 17:40:48.03ID:???0290nobodyさん
2011/08/26(金) 17:41:53.24ID:???使ってそうだな
0291nobodyさん
2011/08/26(金) 18:56:15.61ID:???tableでレイアウト作るような奴とは仕事したくないけど、
表を作るならtableタグを使うべきだと思うけど。
0292nobodyさん
2011/08/26(金) 21:34:55.48ID:???0294nobodyさん
2011/08/26(金) 23:42:06.60ID:???ヘッダー、左サイドバー、右本ページ
サイドバーでのセッションの挙動でちょっと迷ったけど、
普通にCake側のpage_name/1で仕様を満たした。
0295nobodyさん
2011/08/27(土) 00:30:53.03ID:???無理やりなんとかするならJavaScriptで状況解析して全画面リロードかな。
うちもメニュー固定ならフレーム使うことあるけどな。
ページ遷移ないから操作楽だし。
そのウィンドウからシステムの外に出ない限りは何の問題もない。
0297296
2011/08/27(土) 14:23:23.85ID:???0298nobodyさん
2011/08/28(日) 02:02:37.91ID:???ログイン画面にjavascriptで左フレームの中身見て適宜リロードさせるとかそんな感じでおk
0299nobodyさん
2011/09/02(金) 13:07:38.22ID:???HTML的に良くないけど、みんなどうしてる?
サーチとかログインフォームなんかは、1ページ上に2カ所以上で表示させる必要があることがあると思うんだけど。
0300nobodyさん
2011/09/02(金) 14:08:53.98ID:???form1、form2とか
0301nobodyさん
2011/09/02(金) 14:51:41.25ID:???Postgresもちゃんと起動しているのに、
index.phpをブラウザ上で見るとDBに接続できていない、という黄色の帯が表示されます。
PostgreSQLはVer9です。
class DATABASE_CONFIG {
var $default = array(
'driver' => 'postgres',
'connect' => 'pg_connect',
'persistent' => false,
'host' => 'localhost',
'port' => '5432',
'login' => 'postgres',
'password' => 'パスワード'',
'database' => 'postgres',
'prefix' => '',
);
}
他には何が設定が必要なのでしょうか?よろしくお願いします。
0302nobodyさん
2011/09/02(金) 15:11:45.40ID:???0303nobodyさん
2011/09/02(金) 15:14:47.80ID:???Authでログイン処理をしていて、ログインできるユーザー管理部分を作ってるんだけど
会員情報モデルでパスワードの文字数をバリデーションしていると
暗号化された後のパスワードでバリデーションされてしまい、文字数制限にひっかかってしまいうまくいかない
あと会員情報を編集すると、暗号化されたパスワードをさらに暗号化してしまいパスワードが変わってしまう
これらを回避する定番的な方法ってどうやるの?
結構ぐぐったけど案外出てこない…
この辺が以前出ていた、Auth使い物にならないから使わないと言われる理由なのかな?
0304nobodyさん
2011/09/02(金) 15:41:53.93ID:???Authではまり中。
暗号化(ryはbeforefilterで後暗号化とか書いてあったな。
普通のユーザのAuthと、管理者のAuthと分けるにはゴリゴリ書くしかないのかorzz...
0305nobodyさん
2011/09/02(金) 15:43:46.07ID:???ttp://castleonthedesk.seesaa.net/article/118189342.html
0306nobodyさん
2011/09/02(金) 15:48:18.14ID:???AppControllerを継承したControllerでは、AppControllerで定義したusesとかcomponentsとか使えるんだけど
AppController->共通Controller->個別Controllerと継承したい時があって
それをやると、個別Controller内でAppControllerのusesやcomponentsが未定義になる。
これはこういう仕様で、やりたければ何か決まったやり方があるのでしょうか?
最近触ってるけど、Cakeって結構常識的にできてなくてびっくり。
0307nobodyさん
2011/09/02(金) 16:07:23.99ID:???認証分けようと思ってやってるが、未定義になって←イマココ
ttp://doruby.kbmj.com/sendriver_log/20101229/cakephp_
0308nobodyさん
2011/09/02(金) 17:31:35.83ID:???ここ情報ありました。
PHP5.2ってPostgreSQL連携ライブラリを読み込めないバグがあるみたいですね。
0309nobodyさん
2011/09/03(土) 00:30:45.79ID:???oresama_controller.phpにて、
class OresamaController extends AppController {
むにゃむにゃ
}
としてます。
んで、
http://example.com/oresama/
というディレクトリがある場合、処理がコントローラーに渡らずに
Forbiddenになってしまいます
どうしたらいいでしょう?
0311nobodyさん
2011/09/03(土) 07:29:24.81ID:???サンプルコードがないのでわからないのだが、
>Baseの$usesとBaseBarの$extra_usesをマージ
というのはどこでやればいいの?BaseBarのコンストラクタにarray_mergeとか書くの?
0312nobodyさん
2011/09/03(土) 13:49:15.94ID:???検索条件のフォームをGETで送るとpaginateがうまく働かないので
<?php $paginator->options(array('url' => $this->params['url'])); ?>
のようにしてパラメータを明示的にURLに付け足しているんだけど、
1ページ目は、パラメータが$this->params['url']に入っていて、
2ページ目には、$this->passedArgsに入っているという統一感のない実装になってしまっています。
?test1=123&test2=456
のようにアクセスした値を受け取る $this->params['url']と、
/test1:123/test2:456
のようにアクセスして値を受け取る $this->passedArgs
を変換するような関数って用意されてないのかな?
0313nobodyさん
2011/09/03(土) 15:10:07.48ID:???GETを使ってるフォームにまでご丁寧にトークン放り込んでくれちゃったんですが、
GETの場合はトークンいれないとかはできないんでしょうか?
0314nobodyさん
2011/09/03(土) 18:29:05.17ID:???0315nobodyさん
2011/09/03(土) 19:07:13.55ID:???0316nobodyさん
2011/09/03(土) 20:56:38.64ID:???0317nobodyさん
2011/09/03(土) 21:12:48.68ID:???1.2がいちばん盛り上がったみたいだよね。1.2で作ったほうが早いのかもw
CakePHP フォーラムはどうでしょうか?
結構、詳しい方がフォローしてくれそうな感じ
がするのですが・・・
ただ、私はこちらで親切に教えていただいた
おかげで1週間近く悩んでいた問題が解決
できました。
0319nobodyさん
2011/09/04(日) 14:05:32.89ID:???CakePHPからLithiumはすんなり入れるでしょうか?
もし入れるならドキュメントが多いCakePHPでまずは勉強しようと思うのですが、
全くの別物のようならいきなりLithiumから頑張ってみようと思います。
0320nobodyさん
2011/09/04(日) 14:49:40.45ID:???例えばショッピングモール作ると、
同じModelに対してエンドユーザー・店舗・システム管理者と、三種類のユーザーそれぞれに別の画面が必要でーみたいな。
今まで別アプリとして作ってきたんだけど、Modelとかが結構同じ構造なのでもっとDRYにできないかなぁ
0322nobodyさん
2011/09/04(日) 17:19:13.65ID:???買う以外で
0323nobodyさん
2011/09/05(月) 00:01:34.99ID:???あとは自分で書き写したら内容を完全に覚えられるからいいと思う。
0324nobodyさん
2011/09/05(月) 21:59:00.60ID:???SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to
とかエラーが出ていた
データベースとの接続はできているしなんだろうと思っていたんだが
関数がうまく呼び出せてないっぽい
get_classでModelを表示させようとしたら表示がAppModelとかなってたんだけど
同じような現象になった方いませんか?
開発環境では何の問題もなく動くしget_classでModel名がちゃんと表示されるしわからん
0325nobodyさん
2011/09/05(月) 23:31:10.53ID:???routeで
Router::connect('/oresama', array('controller' => 'oresamakun', 'action' => 'index'));
とやっても、やっぱりForbiddenになってしまいます。。。
0327nobodyさん
2011/09/06(火) 00:10:43.75ID:???俺も見当付かないんだけど、データベースサーバー側のエラーと思えるから、データベース名 + 1064で検索するとか、エラーナンバーから詳細を引ける方法を調べてみると何か分かるんでないかな?
(まさかとは思うが、1064ってのは1064文字目って意味じゃぁないだろうなぁ)
0329nobodyさん
2011/09/06(火) 09:50:34.60ID:???0330nobodyさん
2011/09/06(火) 17:32:20.80ID:???0331nobodyさん
2011/09/06(火) 21:30:36.15ID:???サーバーはロリポップでPHPのバージョンは5.3.5で開発環境と一緒なんだ
しかしそうか
PHPの設定の違いを疑ってみるべきだったな
ありがとう!
>>327
違うページではAn Internal Error Has Occurredってエラーが出るから
データベースサーバー側かもしくは設定ミスってるのかなぁ
設定ファイルは最初に完璧であることを確認できたし考えにくいんだよな…
いろいろ調べてもわからなくて…
なぜオブジェクトがAppModelに…って考えてしまう…
0332nobodyさん
2011/09/07(水) 00:16:46.95ID:???訳わからん挙動に悩んだ際のうっかり系チェックリストを当てずっぽうで書いてみる。
どっかで文字コードが違うファイルが混入してるとかは?
あるいはBOMが入り込んでたりとか。
ver.1.xならば、ファイル名に大文字小文字が入り交じっていないか。
そのエラーが出るページと出ないページがあるのなら、
両者でどこが違うのかを切り分けてみてはどうだろう。
0333nobodyさん
2011/09/07(水) 08:22:43.86ID:???>ver.1.xならば、ファイル名に大文字小文字が入り交じっていないか。
これってやばいの?
俺modelのファイル名は大文字小文字使ってるよ
0334nobodyさん
2011/09/07(水) 11:19:19.67ID:???0335nobodyさん
2011/09/07(水) 13:25:42.21ID:???んや、ごめん、大文字小文字の件はCakeとは関係なかたかもしれん。
大文字小文字のポリシーが一貫していない状態でも、
windows開発環境だと動いてしまう。
Unix/Linux運用サーバーに投入した途端に呼び出し廻りで不整合が出だす、
ていうのがあるのかなとオモタ。
0336324
2011/09/07(水) 22:55:24.13ID:???なるほど
xamppで動かしていたんでたしかにありそうだ
ちょっと見てみる
ありがとう
テーブル使ってなくてもModelが使えないって変だよな
なぜ普通のModelをインスタンス化したものがAppModelになるのか…
多分じっくり考えないと無理そうなんで土日に頑張ってみます
0338nobodyさん
2011/09/09(金) 10:59:25.33ID:???0339nobodyさん
2011/09/09(金) 12:25:33.79ID:???0340nobodyさん
2011/09/09(金) 12:33:22.42ID:???0341nobodyさん
2011/09/09(金) 18:09:28.90ID:???0342nobodyさん
2011/09/09(金) 18:23:29.14ID:???0343nobodyさん
2011/09/09(金) 21:48:10.99ID:???0344nobodyさん
2011/09/09(金) 22:08:22.04ID:???自動テストって、Jenkinsみたいな事してみたいんかい?
昔の名前のHudsonでなら、PHPの自動テスト化の記事があった気がする。
>>343
CakeBookでもはっきりとココ、っていう事書いてないんだよね。
bootstrapあたりが無難じゃないかな。
機能分けして大きくなる予定ならvendor配下に入れておいて、app_controllerでimportしておくとか。
0345296
2011/09/09(金) 22:13:08.07ID:???http://book.cakephp.org/ja/view/899/
0346nobodyさん
2011/09/09(金) 23:20:34.77ID:???0347nobodyさん
2011/09/10(土) 23:05:30.23ID:???アクセスできないようにしたいんだけど、どうすればできますか
0348nobodyさん
2011/09/11(日) 00:01:16.07ID:???0352nobodyさん
2011/09/12(月) 00:23:37.99ID:???0353nobodyさん
2011/09/12(月) 00:27:18.43ID:???0354nobodyさん
2011/09/12(月) 00:38:16.74ID:???0358nobodyさん
2011/09/13(火) 22:55:23.32ID:???コンソールアプリからWWW_ROOTを参照すると、
アプリケーションディレクトリ配下のwebrootが返ってきてしまいます。
web画面からアクセスした場合は、ちゃんと設定した通りのパスが返ってきています。
コンソールアプリからはWWW_ROOT参照できないというような制約でもあるんでしょうか?
0359nobodyさん
2011/09/13(火) 23:07:43.48ID:???0360nobodyさん
2011/09/13(火) 23:36:20.60ID:???それがあらぬところを指し示してしまっているため困っています。
defineなので上書きも効かず。
0361nobodyさん
2011/09/14(水) 05:25:27.50ID:MD6DgTpSこのようにアクセスして、imagesコントローラのviewアクションで
サムネイルを生成して画像を表示させているんだけど、
なぜかCakePHPを介してこのようにアクセスすると、ファイルサイズが小さくならない。
viewアクションの動きは、上記を例にすると、
12345.jpgを縦135pxのサイズでimgejpg()を使って表示させる(横幅は比率維持)というものです。
/images/view/12345?height=1
このようにアクセスすると、縦幅1ピクセルの小さい画像が生成されるんですが、
ファイルサイズは17KBとかになってしまいます。
アクションの中身をそっくりそのままphpファイルにして、CakePHPとは無関係の場所でアクセスすると、
ファイルサイズも縮小分小さく(700Bぐらい)なっている。
誰か原因教えてくださいorz
0362nobodyさん
2011/09/14(水) 08:44:52.62ID:???0363nobodyさん
2011/09/14(水) 10:57:44.62ID:???0365nobodyさん
2011/09/14(水) 12:58:26.16ID:???function index(){
$hoge = 0;
$this->set('hoge',$hoge);
}
function ajax(){
$this->autoRender = false;
$this->uses = null;
Configure::write('debug',0);
$hoge = $hoge + 1;
$this->set('hoge',$hoge);
}
view側
<div id="div">
echo "$hoge";
</div>
<?php echo $ajax->link('ajax',ajax,array('update'=>'div')); ?>
ってやるとajaxで「$hoge空っぽなんだけど^^;」って言われるんですけど
ビュー側からコントローラー側へ変数を渡すにはどのようにすればよろしいのでせうか?
0366358
2011/09/14(水) 13:04:29.36ID:???コンソールアプリの場合、web画面からのアクセスとは異なり、
WWW_ROOTはcake.phpで定義されており、
アプリケーションディレクトリ配下のwebrootが指定されてました 。
cakebooksの応用インストール手順片手落ちじゃん。
それともcakeのバグなのかな?
どっちにしてもorz
0368nobodyさん
2011/09/14(水) 13:57:54.28ID:???何も値を渡して無いじゃないw
普通のリンクと同じ。$ajax->link(’title','ajax/1'.......)みたいにすればいい。
http://book.cakephp.org/view/1362/Methods
でもAjaxヘルパーはdeprecatedだからそろそろJsヘルパー使おうよ。
0369365
2011/09/14(水) 14:20:00.53ID:???<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>'ajax')); ?>
です
ここに書いたのは簡略化してるけど、ページネーションしたいだけなんです。
でもSQLが命名規則に適してないから$this->Dammy->query("$sql");みたいに直打ち
で、直打ちしたらページネーションが使えなくなった
だから何とか再現したいと、とりあえずAjaxでカウントアップ作ろう
って事になりました。
function indexで入れた$sqlと
ページ数出してる$nowpageさえ取り出せればいいんですけどね。
>>368
「Ajax使え」と、お上からのお達しやでぇ…
0370368
2011/09/14(水) 14:40:37.39ID:???後半はどうでもいいけど、
一旦Ajaxの事は忘れて、普通のリンク($html->link)でコントローラーの$hogeに値を入れる方法を考えて。
どういうURLを渡したら$hogeに値が入るか。
それがわかったらviewの$html->linkの所を$ajax->linkにすればいい。
0371361
2011/09/14(水) 14:47:07.01ID:MD6DgTpSすいません、今は問題をシンプルにしようと、引数は受け取っていないのでした。
http://phpspot.org/blog/archives/2007/02/phpphpthumbnail.html
これを使って、
$tn_image = new Thumbnail("sample.jpg", 0, 1, 0);
$tn_image->show();
こういうサイズ・画像を決め打ちにしています。
ちなみに最初は上記のクラスライブラリを使わずに自分のコードでサムネイルを作っていました。
自分で書いたコードのせいかと思い、上記のライブラリを使ったのですが、結果は変わらずです。
上記の単純なコードをphpファイルとして単純にアクセスすると
サムネイルが表示され、ファイルサイズも小さくなってくれます。
このことからコードは正しく動いていると思います。
なぜかCakePHPのコントローラにするとファイルサイズが小さくならないのです。
0373365
2011/09/14(水) 15:09:54.34ID:???わからんっ
なるほど、自分の場合は基礎ができてないんだな
いきなりCakePHPから入るんじゃなくて
ちゃんとPHPから勉強する事にする
0374361
2011/09/14(水) 15:10:19.72ID:MD6DgTpSおおおお!!
Cakeで生成した画像にCake の出すエラーのビューHTMLが含まれていました!
ありがとうございます!!!!
こんなバイナリでも見た目は全く正常な画像出してくれるんですね。。。ややこしい。。
0375nobodyさん
2011/09/14(水) 16:33:07.35ID:???さすが秀和…
変数の受け渡しなんて全くと言っていいほど出てこない
ギブアップ 答えください
0376nobodyさん
2011/09/14(水) 16:55:54.59ID:???0377nobodyさん
2011/09/14(水) 17:10:44.90ID:???ビューからコントローラへの受け渡しって無くない?
HTMLヘルパー使う記述なんて全然出てこないわ
0378nobodyさん
2011/09/14(水) 17:16:59.34ID:???0379nobodyさん
2011/09/14(水) 17:21:12.04ID:???みんなどんな本読んでんの?
0380nobodyさん
2011/09/14(水) 19:38:49.94ID:???難しく考えないでいいって。
CookBookのチュートリアル程度の基礎知識はあるとしてだけど。
http://book.cakephp.org/ja/view/1528/
ビューからコントローラへの受け渡しって言うけど、
ブラウザのURL欄に http://example.com/コントローラ/アクション/パラメータ
って手で入れるのと同じことだから。
そしたらコントローラー側では
function アクション($hoge) {......)
で$hogeにパラメータが入るでしょ。
0382nobodyさん
2011/09/15(木) 07:16:07.93ID:???サンプル探そうと検索したんですが出てこないし・・・
出来れば使い方も教えてもらえると助かります。
0383nobodyさん
2011/09/15(木) 10:15:18.66ID:???0384nobodyさん
2011/09/15(木) 11:10:47.97ID:???<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>"ajax/$hoge")); ?>
function ajax($hoge){ echo "$hoge"; }
これで$hogeの内容が出力される
こうなる
■ このスレッドは過去ログ倉庫に格納されています