2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【PHP】フレームワーク CakePHP 9ホール目【v1.3】

1 :nobodyさん:2010/07/23(金) 09:13:26 ID:v3m09M9u
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
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


2 :nobodyさん:2010/07/23(金) 09:13:53 ID:???
■1.3系
CakePHP1.3系のダウンロード
http://github.com/cakephp/cakephp1x/archives/1.3
CakePHP 1.3.x API
http://api13.cakephp.org/
1.2から1.3への移行ガイド
http://book.cakephp.org/ja/view/1561/
CakePHP 1.3の新機能
http://book.cakephp.org/ja/view/1572/

■1.2系
CakePHP1.2系のダウンロード
http://github.com/cakephp/cakephp1x/archives/1.2
CakePHP 1.2.x API
http://api12.cakephp.org/

■Lithium(li3) PHP5.3+
http://rad-dev.org/lithium/

3 :nobodyさん:2010/07/23(金) 09:14:23 ID:???
■過去スレ
【PHP】フレームワーク CakePHP 8ホール目【1.3】
http://pc11.2ch.net/test/read.cgi/php/1268874059/
【PHP】フレームワーク CakePHP 7ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1251789126/
【PHP】フレームワーク CakePHP 6ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1236563737/
【PHP】フレームワーク CakePHP 5ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1229669539/
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【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/

4 :nobodyさん:2010/07/23(金) 09:14:51 ID:???
■関連スレ

【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】下らねぇ質問はID出して書き込みやがれ 97
http://pc11.2ch.net/test/read.cgi/php/1279833891/
Zend Framework Part4
http://pc11.2ch.net/test/read.cgi/php/1265721684/
symfony PHPフレームワークpart2
http://pc11.2ch.net/test/read.cgi/php/1268753684/
[PHP][フレームワーク]CodeIgniterスレ
http://pc11.2ch.net/test/read.cgi/php/1177683436/
【PHP】Ethna part.2【国産フレームワーク】
http://pc11.2ch.net/test/read.cgi/php/1186096518/
【PHP】フレームワークMapleに舌鼓
http://pc11.2ch.net/test/read.cgi/php/1122105465/

5 :nobodyさん:2010/07/23(金) 09:15:00 ID:???
■その他いろいろ
PhpMatsuri2010(予定)
(10月2-3日)
CakeFest 2010 (Chicago, llinois, USA)
http://cakefest.org/
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/
CakePHPカンファレンス東京(2008)
http://conference.cakephp.jp/

連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/cakephp
CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions
ttp://www.cpa-lab.com/tech2/inflects/
Free CakePHP Book (Matt Curry and Mark Story)
http://www.pseudocoder.com/free-cakephp-book/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP Note
http://www.garacter.com/notes/CakePHP+Note/ni:5
CakePHPを使ったMVC設計のベストプラクティス - Sooey
ttp://www.sooey.com/journal/2008/03/26/717/
Qdmail(日本語メールコンポーネントとして利用可能なライブラリ)
ttp://hal456.net/qdmail/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

■ver1.1用
CakePHP プログラマーズ リファレンスガイド
http://cakephp.jp/doc/
CakePHPフレームワークによる快速WEB開発 |codezine
http://codezine.jp/a/article/aid/670.aspx

6 :nobodyさん:2010/07/23(金) 09:15:34 ID:???
■関連書籍
・ver1.3系
CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用
http://www.amazon.co.jp/dp/4798026646/
CakePHP 1.3 (独語らしい)
http://www.amazon.co.jp/dp/3827327709/
・ver1.2系
CakePHP1.2ガイドブック
http://www.amazon.co.jp/dp/4839932468/
CakePHPによる実践Webアプリケーション開発
http://www.amazon.co.jp/dp/4839930651/
オープンソース徹底活用 CakePHPによるWebアプリケーション開発
http://www.amazon.co.jp/dp/4798022225/
CakePHP ポケットリファレンス※ver1.2beta
http://www.amazon.co.jp/dp/4774135038
CakePHP徹底入門
http://www.amazon.co.jp/dp/479811717X
PHPで作る携帯サイトデベロッパーズガイド
http://www.amazon.co.jp/dp/4798024767/
・ver1.1系
CakePHPガイドブック
http://www.amazon.co.jp/dp/4839924317
Fast CakePHP
http://www.amazon.co.jp/dp/4774133418

7 :nobodyさん:2010/07/23(金) 09:16:23 ID:???
テンプレらしきものは以上(>>1-6 ひとつ増えちゃった)
補足があればどうぞ

Have a Nice Cooking !
> cake bake all User

8 :nobodyさん:2010/07/23(金) 14:23:29 ID:???
beforeValidateで加工編集した$this->dataをビューに渡すには
バリデート後にコントローラー内で

$this->data[モデル] = $this->モデル->data;

ってやってたんですが、
これだとモデル毎にコントローラー内に書かないといけないので
もっと簡単にする方法はないでしょうか

9 :nobodyさん:2010/07/23(金) 14:30:58 ID:???
>>8
基本的にbeforeValidateはsave用のデータを変更するときに使用するから
コントローラーのdataに戻さない使い方が基本よ

で、saveに失敗したら戻したいとかなら、データ加工のメソッドをモデルに別で作って、setの前とかで呼んであげたほうが良いと思う
$this->data = $this->User->changeStatus();
みたいに

10 :nobodyさん:2010/07/23(金) 14:31:19 ID:???
BBS用のコントローラを作って
class BbsController extends AppController {
  var $name = 'Bbs';
  var $title = "BBS";

とやったんですが、「bbテーブルがない」とエラーになります。
sで終わる単語は使うとまずいんでしょうか?

11 :nobodyさん:2010/07/23(金) 14:33:22 ID:???
>>9
あ、その例だとデータ渡ってないな
$this->data = $this->User->changeStatus($this->data);
こうか?

12 :nobodyさん:2010/07/23(金) 14:35:33 ID:???
>>10
sで終わる略語はInflectorに設定しなくてはだめ

可能ならtable名をboardsとかにしたほうが良い

13 :nobodyさん:2010/07/23(金) 15:28:37 ID:???
>>10
コントローラで
var $uses = array('Bbs');

bbsモデルで
var $useTable = 'bbs';

って明示的に指定してやればうまくいきそうだけど。

14 :nobodyさん:2010/07/23(金) 15:51:54 ID:???
俺もいつもそうしてるな。
テーブル名は自由に付けたい

15 :nobodyさん:2010/07/23(金) 20:53:02 ID:???
俺ならboardsにするな
BBSコントローラーだといまいち何をするものかわからん気がする
掲示板システム全部を請け負うと肥大化しそうだし、boards,threads,responsesとかで分けた方がいいんじゃね?

16 :nobodyさん:2010/07/23(金) 23:15:07 ID:???
BBSの複数形はBBSes
てか、掲示板は英語でforumって書くのが一般的だと思うが

17 :nobodyさん:2010/07/23(金) 23:30:08 ID:???
topicsは?

18 :nobodyさん:2010/07/23(金) 23:42:12 ID:???
cakephpって普通にgetパラメーター使うのって非推奨?
標準ページングのURLが気持ち悪くて、/hogeとか/hoge?page=2にしてみて、
/hogeをキャッシュしようと思ったら/hoge?page=2も同じページと見なされちゃうっぽいんだけど

19 :nobodyさん:2010/07/24(土) 00:57:52 ID:???
>>18
そこなんだよね。
cakeのpage:2 形式だとクエリストリングにスラッシュとか入った時におかしくなるし、
?page=2にしたらキャッシュしてくんないし。俺はキャッシュの方をあきらめたけど。

20 :nobodyさん:2010/07/24(土) 01:38:30 ID:???
/key=val/key2=val2/
にかえるのでよければ簡単にできる。

あとキャッシュは自前でクラス使うのもそれほど苦じゃないかと

21 :nobodyさん:2010/07/24(土) 04:31:49 ID:???
ま、素のPHPで書けばそもそもキャッシュ無いしな。
キャッシュの恩恵が受けられるサイトの場合、鯖で対策するだろうし。

22 :nobodyさん:2010/07/24(土) 14:37:15 ID:???
beforFilter内でrenderができないのだけどエラーを出す時にはどうすればよいのでしょうか

23 :nobodyさん:2010/07/24(土) 20:02:03 ID:???
CakePHPってPHP4の書き方を強要されるわけだが
それで気持ち悪いと思わないの?

24 :nobodyさん:2010/07/24(土) 20:07:02 ID:???
気持ち悪いと思うかどうかが聞きたいの?

25 :nobodyさん:2010/07/24(土) 22:28:17 ID:???
>>23
そうだね。じゃ、バイバイ

26 :nobodyさん:2010/07/24(土) 22:56:15 ID:???
PHPのバージョンはそんなに気にならないが、連想配列地獄はかなり気になる

27 :nobodyさん:2010/07/24(土) 23:00:45 ID:???
他に拡張性のあるfunctionの書き方ってどんなのがあるの?

28 :nobodyさん:2010/07/24(土) 23:03:23 ID:???
>>24
気持ち悪いと思わないの?
気持ち悪いのであれば何故使ってるの?

>>26
なぜバージョンが気にならないの?
今時PHP4の書き方なんかに戻れないんだけど。

29 :nobodyさん:2010/07/24(土) 23:17:59 ID:???
>>28
PHP5でしかつかわないんならPHP5で書けばいいだけだと思うんだけど
PHP4を強要される場面があるなら教えてくれないか?

30 :nobodyさん:2010/07/24(土) 23:26:33 ID:???
Lithiumに期待

31 :nobodyさん:2010/07/24(土) 23:36:03 ID:???
何の手続きか知らないけど
「気持ち悪いと思わないの?」なんて聞かれるのは気持ち悪い

PHP4の書き方が気持ち悪いかどうかで言ったら別に気持ち悪くはないし

だから
PHP4の書き方強要されるのが嫌だ もっとうまい具合に解決してほしい
とストレートに言ってくれたほうがいいな


32 :nobodyさん:2010/07/25(日) 00:37:10 ID:???
var $name = なんて書かないぜ!

33 :nobodyさん:2010/07/25(日) 03:13:37 ID:???
CakePHPに言いがかりをつけたいだけだから
相手にしても会話にならない

34 :nobodyさん:2010/07/25(日) 03:34:31 ID:???
まぁそう言わずに
むしろ批判こそいろいろ見えてきていいと思うけどな。
批判してた人も、え?そうなの!?になるかもしれないじゃん。


35 :nobodyさん:2010/07/25(日) 04:37:05 ID:???
批判というか意見だけど、URLパラメーターの切替が出来たらいいな。
/contoroller/action/1 や /contoroller/action/id:1
みたいな形はSEO的に良いかもしれないけど、少しわかりづらい。
従来のように
/contoroller/action/?id=1 とか /contoroller/action?id=1
でも良いと思う。

36 :nobodyさん:2010/07/25(日) 05:36:41 ID:???
mod_rewriteのせいで、リクエスト側と受け取るURLが変わるから
OAuth認証のsignatureが合わなくて苦労した

37 :nobodyさん:2010/07/25(日) 13:46:57 ID:???
>>35
スタティックなページだと、smart URLの方がいいと思うんだけど、
ページングとかのダイナミックなページは従来のURLの方がいいと思う

× /archive?id=1
○ /archive/id:1
○ /archive?page=2
× /archive/page:2

というわけで俺も両方使えた方がいいと思うけど、
従来のURLを切り捨てて実装している機能が多いから無理だろうなあ
前スレに出ていたキャッシュとかもそうだけど。

38 :nobodyさん:2010/07/25(日) 16:16:20 ID:???
named使いにくいと思ってたの、俺だけじゃなかったんだ

Cake標準のページネーション使うと、
named使わなきゃならないんだよね。

検索フォーム作るとき、
POSTのときと、namedのときで処理を変えなきゃいけないのが面倒・・・

Paginatorヘルパー拡張して、page=1みたいなURL吐くようにすればいいのかな?

39 :nobodyさん:2010/07/25(日) 16:33:37 ID:???
>>38
おれはいっそのこと、$_POSTとか$_GETとかそのまま受け取るようにしてるよ。
namedから呼び出していたら使い勝手悪いし。

40 :nobodyさん:2010/07/25(日) 20:37:53 ID:???
>>39
2ページ目以降はどうするの?

41 :nobodyさん:2010/07/25(日) 20:49:24 ID:???
>>40
if ($_GET["page" > 1]) {
$page = $_GET["page"];
} else {
$page = 1;
}

こんな感じでページネーションに渡せば良くないか?

42 :nobodyさん:2010/07/25(日) 20:50:32 ID:???
1行目が変だった・・・
if ($_GET["page"] > 1) {

ま、整数のみ許可するとかもう少し処理入れるべきだろうが。

43 :nobodyさん:2010/07/25(日) 21:03:34 ID:???
なにそのうんこソース

44 :nobodyさん:2010/07/25(日) 21:04:58 ID:???
$page = empty($_GET['page']) ? 1 : $_GET['page'];

45 :nobodyさん:2010/07/25(日) 21:05:59 ID:???
えーーくせれんっ!!

46 :nobodyさん:2010/07/25(日) 21:33:12 ID:???
namedで来るのはそのまま使って後ろに ?query=eroero とか付ければいいだけじゃ。

47 :nobodyさん:2010/07/25(日) 21:44:55 ID:???
>>46
そんな気持ち悪いURLいやだろ

48 :nobodyさん:2010/07/25(日) 23:54:46 ID:???
もう、Cake使うのやめて、必要な部分だけオレオレに移植しろよ。

49 :nobodyさん:2010/07/26(月) 01:51:25 ID:REeMHXov
webrootだけを以下のような構成で配置しているとします。

/home/test/public_html // CakePHP以外のHTMLファイルなどがある
/home/test/public_html/system // CakePHPの公開ディレクトリ

ベースURLはhttp://localhost/test/だとし、
システム用の(Cake用)の場合は、http://localhost/test/system/になるとします。

ビューの中で<?php include("../include/header.php")?>
と相対指定すれば
/home/test/public_html/include/header.php
のファイルを読み込む事が出来るのですが、
ページネーションなどでURLが階層化されるとinclude出来ません。

通常は、views/elementにビューの共通ファイルを入れると思うのですが、
/home/test/public_html/include/header.phpにあるファイルをコピーするので
同じファイルが2つ存在する事になり、効率が良くないです。

上記のように「Cakeを使う箇所・使わない箇所」で分けている時、
共通化するファイルはどうするべきでしょうか?
やはりviewsに入れて分けるしかないのでしょうか?

50 :nobodyさん:2010/07/26(月) 02:21:11 ID:???
問題を切り分けろバカ


>ビューの中で<?php include("../include/header.php")?>
>と相対指定すれば
あたりまえだろ
絶対指定しろ

>上記のように「Cakeを使う箇所・使わない箇所」で分けている時、
>共通化するファイルはどうするべきでしょうか?
>やはりviewsに入れて分けるしかないのでしょうか?
絶対指定した上で自分でどちらが扱いやすいか判断しろ



51 :nobodyさん:2010/07/26(月) 02:27:28 ID:???
paginaterのパスから総体指定すればいいんじゃね?

52 :nobodyさん:2010/07/26(月) 02:51:26 ID:???
こいつ同じやつだろ
しかも聞くだけ聞いてまたのこのこあらわれる

53 :nobodyさん:2010/07/26(月) 10:10:02 ID:???
バレちゃったwテヘッ

54 :nobodyさん:2010/07/27(火) 11:03:38 ID:???
rollback後に何らかの処理をafterrollback的に行いたい場合は
こんな感じでモデルに記述してOKでしょうか

function rollback()
{
parent::rollback();
$this->afterRollback();
}
function afterRollback()
{
//処理
}


55 :nobodyさん:2010/07/27(火) 11:50:14 ID:???
>モデルに記述して
なんだよモデルってAppModel? 特定のモデル?modelClass?

あとOKでしょうか?ってエラー出なきゃなんでもOkっちゃOKだよ

56 :nobodyさん:2010/07/27(火) 13:08:06 ID:???
ここの住人に許可を得たいんだと思う

57 :nobodyさん:2010/07/27(火) 13:14:07 ID:???
じゃあおれは許可する

58 :nobodyさん:2010/07/27(火) 13:28:33 ID:???
いやワシは認めん。そもそも function rollback()って誰だ!

59 :nobodyさん:2010/07/27(火) 14:33:44 ID:???
結婚はrollbackはできんぞ!
insertしたら責任を取れ!

60 :nobodyさん:2010/07/27(火) 14:42:03 ID:???
>>59
そりゃ、結婚した時点で自動コミットだからrollbackできない。

61 :nobodyさん:2010/07/27(火) 14:44:16 ID:???
しかも結婚テーブルはIDはオートインクリメントでdelete権限ついてないから厄介だよね。

62 :nobodyさん:2010/07/27(火) 14:51:29 ID:???
お前らはまずinsertするデータがnot foundだから安心すれ

63 :nobodyさん:2010/07/27(火) 15:47:46 ID:???
結婚テーブルがありません

64 :nobodyさん:2010/07/27(火) 15:53:51 ID:???
$data = $this->TestModel->findById(1);
とすると、
$dataにはArrayデータが格納されます。
このArrayの中に「value」というカラムのデータがあるのですが、このvalueの値を1行で取得したいのです。

$value = $this->TestModel->findById(1)['TestModel']['value'];
はだめでした。

文法的にどのように書くのが正しいのでしょいか?

65 :nobodyさん:2010/07/27(火) 15:57:55 ID:???
一行で取得したい
そんな風に考えていた時期が僕にもありました。
今考えると赤面ものです。

66 :nobodyさん:2010/07/27(火) 15:59:35 ID:???
>>64
TestModelにオリジナルメソッド作りましょう

67 :64:2010/07/27(火) 16:01:31 ID:???
>>65,66
modelに書くべきとは確かに思います。
ただ単に、文法的にできるかどうか、知りたいんです・・・。


68 :nobodyさん:2010/07/27(火) 16:03:05 ID:???
>>64
1.findのfieldsで取得したいfieldを指定できる。
2.配列の値がひとつならcurrentで下がっていけばいい。

これでできるんじゃないか
読みづらくてあほだけど。

69 :nobodyさん:2010/07/27(火) 16:09:35 ID:???
あー
perlでは
{$this->TestModel->findById(1)}['TestModel']['value'];
こんな感じにできた気がするなぁPHPは無理なんじゃない?てか知らない。

70 :nobodyさん:2010/07/27(火) 16:39:06 ID:???
他の言語だとできるけど、PHPじゃ無理です

71 :nobodyさん:2010/07/27(火) 18:37:46 ID:???
>>64
これじゃだめなん?
$data = $this->TestModel->field('value', array('id' => 1));

72 :nobodyさん:2010/07/27(火) 19:43:06 ID:???
おれもそれを言おうとしていた

73 :nobodyさん:2010/07/27(火) 19:45:19 ID:???
おれもおれも

74 :nobodyさん:2010/07/27(火) 19:45:57 ID:???
おれもいつもそうしてる。

75 :64:2010/07/27(火) 21:01:45 ID:???
>>71
ありがとうございました。
modelに処理を書くにしてもシンプルに書きたいので、まさに理想です。
このやり方、しっかり心に刻みます。

みな調子いいなぁ・・・w

76 :nobodyさん:2010/07/27(火) 21:43:58 ID:???
俺も最初からわかっててあえて・・・な

77 :nobodyさん:2010/07/29(木) 03:48:26 ID:8543E4o9
Ruby on Railsで10分で作るTwitterもどき
http://japan.zdnet.com/video/screencast/story/0,3800079413,20354695,00.htm
http://www.asahi.com/ai/cp27863.edgefcs.net/screencasts/toytter.zip
http://japan.zdnet.com/blog/yoshimi/2007/10/01/entry_27016431/
http://japan.zdnet.com/blog/yoshimi/2007/10/10/entry_27016432/
http://japan.zdnet.com/blog/yoshimi/2007/10/12/entry_27016433/
http://japan.zdnet.com/blog/yoshimi/2007/10/22/entry_27016434/
http://japan.zdnet.com/blog/yoshimi/2007/11/14/entry_27016435/
http://japan.zdnet.com/blog/yoshimi/2007/11/17/entry_27016436/
http://japan.zdnet.com/blog/yoshimi/2007/11/22/entry_27016437/
http://japan.zdnet.com/blog/yoshimi/2007/11/29/entry_27016438/
http://japan.zdnet.com/blog/yoshimi/2007/12/08/entry_27016439/

toytter-2.0
http://japan.zdnet.com/blog/yoshimi/2008/02/05/entry_27016446/

TwitterAPIをActiveResourceで
http://japan.zdnet.com/blog/yoshimi/2008/02/18/entry_27016448/
script/consoleから
> Twitter::Status.post(:update, :status => "activeresource test")
ってやるだけで、Twitterに投稿できる。

これでtoytter内で発言すると、twitterにも同じ内容が投稿されるようになりました。

78 :nobodyさん:2010/07/29(木) 15:34:05 ID:???
idをfindして、その結果を次のクエリとしてINに指定したいとき、
findしたデータを1次元の配列に変換しないといけないのですが
これができる関数ってあるのでしょうか。
array_mapするのが定石でしょうか。

$result=$this->Model1->find('all', array('fields'=>'Model1.id'));
$array=hoge_function($result);
$conditions=>array('Model2.hoge_id'=>$array);
$this->Model2->find('all', array('conditions'=>$conditions));

上記の例の場合のhoge_functionのような処理を簡単にしたいです。

79 :nobodyさん:2010/07/29(木) 15:43:01 ID:???
>>78
その例ならアソシエーション使わない理由が分からない
例を無視して応えるならfind('list')で取得してarray_keysかな?

80 : [―{}@{}@{}-] nobodyさん:2010/07/30(金) 02:07:24 ID:???
デジタル工房です
只今オープン価格中
http://gekiyasu.issekinicho.com



81 :nobodyさん:2010/07/30(金) 09:29:57 ID:???
>>78
Set::extractかな
http://book.cakephp.org/ja/view/1501/extract

CakePHPはサブクエリが思うように使えないから、俺もよくやる

82 :nobodyさん:2010/07/30(金) 10:01:28 ID:???
Set::extractは便利だけどfindAllは無駄

83 :78:2010/07/30(金) 12:28:39 ID:E2f+bC/4
>>81
おー、まさにこれですね。ありがとうございます。
他にも使えそうなのがありますね > setクラス

84 :nobodyさん:2010/07/30(金) 12:32:10 ID:???
Set::merge
Set::combine
Set::extract
あたりは結構常用してる

85 :nobodyさん:2010/07/30(金) 12:54:21 ID:???
>>83
キミはSet覚える前にアソシエーションを覚えるべきw

86 :nobodyさん:2010/07/30(金) 18:30:15 ID:???
cakephp1.3を使っています。
下記のようにあるコントローラに別のコントローラを継承させています。
App::import('Controller','Base');
class TestController extends BaseController {
Testというページは情報入力画面なのですが、
最初の画面は表示されるのにサブミットボタンを押した後真っ白な画面になってしまいます。
phpのエラーはなくdebug.logにも何も出力されておりません。
継承ではフォームの作成は出来ないのでしょうか。

あいまいな質問ですみません。
何かヒントでもつかめればと思います。

87 :nobodyさん:2010/07/30(金) 18:47:58 ID:???
もう一つご質問です。
TestControllerとTest2Controllerというコントローラがあり
処理も全く同じでファイルパスだけが違うます。
これまで処理が全く同じでパスだけ違う場合
シンボリックリンクを張りファイル名だけ変えていたのですが
cakeの場合クラス名が変わるのでそれが使えません。
同じ処理を行うファイルを複数使用する場合
効率のいいやり方はありますか?


88 :nobodyさん:2010/07/30(金) 19:13:40 ID:???
>>86
SecurityComponent
blackholeCallback
あたりだと思う

89 :nobodyさん:2010/07/30(金) 19:14:56 ID:???
>88
SecurityComponentを外したら確かにアクセス出来るようになりました
どうもありがとうございます!

90 :nobodyさん:2010/07/30(金) 19:24:07 ID:???
なんか色々あれだな
答えたくもないわ

91 :nobodyさん:2010/07/30(金) 19:40:54 ID:???
>>87
どうしてそこに至ったかはあえて問わないが
mod_rewriteとか、、

92 :nobodyさん:2010/07/30(金) 22:55:32 ID:???
Pluginを表示してる時に、$form->create();つかうと、
URLにプラグインが保管されてしまうんですがこんな仕様でしたっけ?

$html->link(array(....));のときにプラグイン名を明示的に
'plugin'=>nullってしてやらないとこれもプラグインが勝手に保管されるので同じように
form->create()の第二引数で指定してやってもダメでした。

なんか他のところに原因があるんでしょうか

93 :92:2010/07/30(金) 23:05:23 ID:???
今までそうじゃなかっただろとおもいながらもよくよく考えてみたら同じケースが無いだけだったみたいな。
で、どーもそういう仕様っぽいなってことで、以下のようにしました。
<?php echo $form->create('Member', array('url'=>array('plugin'=>null, 'controller'=>'members', 'action'=>'login')));?>

memberを2個かくのに抵抗感汁んですがまぁいいや。

94 :nobodyさん:2010/07/31(土) 07:39:26 ID:???
よく分からないんだけど、pluginの /:plugin/hoge/add のページから /members/login にpostしたいってこと?
それならpluginをnullしなきゃいけないのは当然よ

95 :nobodyさん:2010/08/01(日) 00:23:04 ID:???
そゆことっす。
んで、html->link()の時はplugin=null入れなきゃってのは前からやってたんですが、
formのケースが自分でかってに
plugin=nullなんて指定しなくても第一引数がPlugin.Memberとかでない限り大丈夫だと思ってたんです。
でもそうじゃなかったと。
サーセン


96 :nobodyさん:2010/08/01(日) 08:44:34 ID:???
そだね
基本的に現在のURLを残そうとするからね

97 :nobodyさん:2010/08/01(日) 09:04:08 ID:???
でも、なぜかpassは残してくれないんだよなぁ

98 :nobodyさん:2010/08/02(月) 12:35:29 ID:n6/Fh0gL
解決できない><
知恵をお貸しくだされ

入力任意の日付項目があって
viewで
$form->input('A',array('type'=>'date','empty'=>'','selected'=>'' ・・・
ってしたときに
modelでvalidateを下記のように設定する
'A' => array(
   'rule' => array(
    'allowEmpty' => true,
    'message' => '正しい日付を選択して下さい'
)
),
で設定すると入力フォームで年月日を全部選択しないとmodelで値が
取れないからどうしたらいいか迷ってる。

一番簡単な方法は'type'=>'date'を使わないで
年月日を別々に作っちゃうことだけど
それ以外の方法でなにかないかな?

99 :nobodyさん:2010/08/02(月) 12:53:48 ID:???
しらんがどうしてもだめなら独自ルール作ればいいじゃん
超簡単にかけるでしょ

100 :nobodyさん:2010/08/02(月) 13:48:24 ID:???
belongsToとかで複数テーブルを連携させるとき、その複数テーブルに存在する共通のカラムを
findのconditionで指定した場合(例えば $condritions=array('xxx'=>'aaa')など)
「Column 'xxx' in where clause is ambiguous」
というエラーが発生します。

$condritions=array('(テーブル名).xxx'=>'aaa')
というようにテーブル名を条件指定のときに付与すれば回避できるのですが、
テーブル名を直接記述するのもフレームワーク的にしっくりきません。

他にこのエラーの回避方法などありますでしょうか?

101 :nobodyさん:2010/08/02(月) 13:51:18 ID:n6/Fh0gL
>>99
99さん返信ありがとです
98ですが、独自ルールの前に値がmodelでは取れないので困っているんです
viewでは取れているのですが^^;;;
具体的には
'A' => array(
'rule' => 'validateData',
'message' => '正しい日付を選択して下さい'
),

##データValidate関数
##$this->data[$this->name][$key]['year']と
##$this->data[$this->name][$key]['month']と
##$this->data[$this->name][$key]['day']がとれない;;
##'A'というkeyで値が取れている。ひとつでも選択されてないと値が空白になる
##という理由で独自に作ってもだめです><
function validateData($field=array()) {
foreach($field as $key => $val){
if($key=='A'){
if(!empty($this->data[$this->name][$key]['year']) && !empty($this->data[$this->name]['month']) && !empty($this->data[$this->name]['day'])){
return checkdate($this->data[$this->name]['month'],$this->data[$this->name]['day'],$this->data[$this->name]['year']);
}else if(empty($this->data[$this->name]['year']) && empty($this->data[$this->name]['month']) && empty($this->data[$this->name]['day'])){
return true;
}else{
return false;
}
}
}
return true;
}


102 :nobodyさん:2010/08/02(月) 14:03:00 ID:???
>>101
次からsageてくれないか?

103 :nobodyさん:2010/08/02(月) 14:05:01 ID:???
>>100
http://book.cakephp.org/ja/view/1018/find
のソースをよーく見てね

104 :100:2010/08/02(月) 14:10:02 ID:???
>>103
ありがとうございました。
conditionsの指定はカラム名だけでOKなものと思い込んでいました。。。
モデル名の付与がそもそも正しいんですね。

105 :nobodyさん:2010/08/02(月) 14:36:00 ID:???
>>101
validateData()内で
dump($field);
するとどうなるの

106 :nobodyさん:2010/08/02(月) 14:39:32 ID:???
なるほど。
yearだけ入力されて送信されても、ほかが空っぽだと、何も入ってないってこと?
$this->data[$this->name]['year']じゃなくて
$this->data[$this->name]とかにYYYY-MM-DDな感じに加工されたテキストで入ってなかったっけ?

107 :nobodyさん:2010/08/02(月) 14:54:10 ID:???
98です。解決しました。みなさまありがとうございました。

$form->input('A',array('empty' => array('00'=>'--'),'selected' => '' ,

emptyオプションに配列を入れてVALUEを設定しました。
これで一応解決しました

本当は年月日別々にemptyを設定しようかと思ったんですが
書き方がわからなかった&時間がなかったという理由で上記で
一応解決とさせていただきました。

以下返信してくれた方へのレス

>>102
書き込むのは初めてだったのですまん。
たぶんこれで下がっていると思われ

>>105
debugger::dump($field);
結果はNULLが入った;;
array(
"A" => null
)

>>106
そうです。
$this->data[$this->name]がNULLになっちゃうんです


108 :nobodyさん:2010/08/02(月) 22:28:51 ID:???
>>100
エラーメッセージ読もうよ。。。
「Column 'xxx' in where clause is ambiguous」

109 :Beginner:2010/08/02(月) 22:44:27 ID:???
只今、CakePHP1.2.6 で掲示板を作成しています。
ThreadモデルとResponseモデルがあり、
◆Threadテーブル
・id int
・title text
・created datetime
・modifired datetime

◆Responseテーブル
・id int
・thread_id int
・comment text
・created datetime
・modifired datetime

Thread hasMany Response、Response belongsTo Threadになっています。


110 :Beginner:2010/08/02(月) 22:45:34 ID:???
続きです

Responseテーブルの件数(10件)毎にpaginateを実行したいと思っています。

イメージとしては、

[1][2][3][4][5](ページング)
-------------------------------
スレッド1: 
-------------------------------
1 名前: Aさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge1
piyopiyo1

2 名前: Bさん 投稿日: 2010/07/23(金) 09:13:26
hogehoge2
piyopiyo2

-------------------------------
[1][2][3][4][5](ページング)

こんな感じです。

Containableビヘビアを使用して、データを取得しています。(findではデータの取得が出来ました)

でもpaginateが出来ません。
どのようにすれば出来るでしょうか?

以下のような方法しかないのでしょうか?
http://book.cakephp.org/ja/view/249/
4.9.4 カスタムしたクエリによるページ付け

111 :nobodyさん:2010/08/03(火) 00:28:24 ID:???
>>110
paginateの条件指定の周りはどう書いてるの?
$this->paginate('Response')
でいけると思うんだけど。

112 :nobodyさん:2010/08/03(火) 03:16:32 ID:???
>>108
質問の意味を理解しな

113 :nobodyさん:2010/08/04(水) 11:55:21 ID:???
講師がいきなりガンダムの話しをしてきた・・・
http://jbbs.livedoor.jp/bbs/read.cgi/internet/6235/1265358917/

33 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)