トップページphp
1001コメント305KB

【PHP】フレームワーク CakePHP 8ホール目【1.3】

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2010/03/18(木) 10:00:59ID:6+kHM8kH
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※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
0002nobodyさん2010/03/18(木) 10:01:29ID:???
■1.2系
CakePHP1.2系のダウンロード
http://github.com/cakephp/cakephp1x/archives/1.2
CakePHP 1.2.x API
http://api12.cakephp.org/

■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/

■Lithium(li3) PHP5.3+
http://rad-dev.org/lithium/
0003nobodyさん2010/03/18(木) 10:01:49ID:???
■過去スレ
【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/


■関連スレ
【PHP】PHPフレームワーク総合スレ14
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】下らねぇ質問はID出して書き込みやがれ 94
http://pc11.2ch.net/test/read.cgi/php/1268835461/
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/
0004nobodyさん2010/03/18(木) 10:02:03ID:???
■その他いろいろ
CakePHPカンファレンス東京(2008)
http://conference.cakephp.jp/
CakeMatsuriTokyo2009
http://matsuri.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
0005nobodyさん2010/03/18(木) 10:02:22ID:???
■関連書籍
・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
0006nobodyさん2010/03/18(木) 10:04:01ID:???
テンプレらしきものは以上
補足があればどうぞ

Have a Nice Cooking !
> cake bake all User
0007nobodyさん2010/03/18(木) 10:06:31ID:???
>>1
お疲れサマ!
0008nobodyさん2010/03/18(木) 13:31:33ID:???
>>1

そろそろ1.3への移行を考えなきゃいけない時期かね
1.1→1.2よりかは1.2→1.3の方がやるべきことは少なそうだけど、1.3の新機能のメリットはそこまで大きく感じない・・・
0009nobodyさん2010/03/18(木) 13:55:10ID:???
>>8
試しに移行を進めてるけど、俺のソースだと結構直すとこいっぱいあったな。
例えばhtmlヘルパーのオプション設定とか、
ちぐはぐだなと思ってた部分はだいぶ合理化されてるから気分的にはすっきりしたけど。
0010nobodyさん2010/03/19(金) 13:48:38ID:???
core.php を 0 にして
cakephp の debug を
$_SESSION['Auth']['User']['email'] = 'admin@hoge.com';
でログインしているときのみ、 2にしたいんだけど、どうすればいいかな。
beforeFilter や beforeRenderでやってもだめみたい。

core.php を 0 にしちゃうと、コントローラーで個別に Configure::write('debug', 2); をやっても
エラーがちゃんと表示されないんだよね。
0011nobodyさん2010/03/19(金) 14:04:16ID:???
>>10
エラーって何だろ?
ふつうにbeforeFilterやbeforeRenderで変えられるよdebugは

>>10の例ならbootstrap.phpで変えても良いけど
0012nobodyさん2010/03/19(金) 17:10:00ID:???
>>11
ありがとう。core.php内でIPアドレスでチェックすることにして解決しました。
0013nobodyさん2010/03/19(金) 19:16:46ID:qSSo5h5k
すごい長いですが失礼します。

まず、やりたいことなのですが。
DBconsultantsのmetroフィールドに01,03,11,22,33,34が入っていたとして
この中のどれかを含んでいたらconsultants全てのデータを取ってきたいのです


view
1~47の都道府県がチェックボックスになっています。
<?php e($form->checkbox('Page.metro.'.$prefectureHashModel['Prefecture']['pre_id']))?>

0014nobodyさん2010/03/19(金) 19:18:17ID:qSSo5h5k
controller

// チェックが入った物だけを取得し、配列に格納
$metroHash = array();
foreach($this->data['Page']['metro'] as $key => $value){
if($value == 1){
$metroHash[] = 'metro Like ' . "%".$key."% ";
}
}

// 配列を文字列に変換
$metroHash = implode(' or ',$metroHash);

$consultantHashModelArray = $this->Consultant->query('SELECT * FROM `consultants` WHERE ' .$metroHash);
ここでこのSQL文を使えばできるのですが、今回やりたいのは下のpaginatorででして
どのようにすれば上のSQL文と同じ処理をしてくれるかがわかりませんので教えて頂けないでしょうか?


$conditionsHash = array();
$conditionsHash['metoro LIKE ?'] = なんたら?
$this->paginate = array('Consultant' => array('conditions' => $conditionsHash,
'limit' => 10,
'order' => array('consultant_id' => 'DESC'),
'page' => 1));
0015nobodyさん2010/03/19(金) 19:27:50ID:???
すみませんCakeのバージョンは1.3です。
0016nobodyさん2010/03/19(金) 20:20:26ID:???
PEARなどを使うとき、Cakeのコアクラスと名前が衝突してしまい、うまく動作しないことがあるのですが、
みなさんはどのように解決されていますか?

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1153&forum=3&post_id=2359

こちらではPEAR側のソースを書き換える方法が提示されていますが、
できればソースの書き換えはしたくないです。

そもそも、コアクラスとか定数にprefixがついてないのっていろいろと問題あるとおもうのですが・・・どうなんでしょう。
0017nobodyさん2010/03/19(金) 23:42:18ID:???
>>13
モデル名からなにやりたいのか想像つきにくいよ。
たぶんconsultants_metorosテーブルを作ってHABTMにするのが簡単なんじゃないかなと思うけど。
0018nobodyさん2010/03/20(土) 16:12:27ID:???
javascriptでもMVC
ttp://code.google.com/p/jsigniter/
0019nobodyさん2010/03/20(土) 19:57:19ID:???
cakephp1.2.6+xamppで、http://3d.rokujyou.com/cake/index.htmlを動かそうとしているのですが、

Missing Controller
Error: UrllistController could not be found.
Error: Create the class UrllistController below in file: app\controllers\urllist_controller.php

というエラーが出てしまいます。
urllists_controller.phpをurllist_controller.phpに変更しても同じでした。
何か他に設定すべきことがあるのでしょうか?
0020nobodyさん2010/03/20(土) 20:31:58ID:???
>>19
Class名は変えたの?
0021nobodyさん2010/03/20(土) 22:31:07ID:???
初歩的な質問で申し訳ございません
チュートリアルで分からない部分があります。

コントローラとビューについて
ビューの画面に遷移しようとするとコントローラのメソッドが呼び出され
その結果、戻り値を反映したビューがブラウザに表示されると解釈していました。

しかし、editファンクション内の処理で行われるPostデータをsaveする命令は
ビューが表示された後にPost送信するときに実行されるように見えます。
この処理の流れがよく分かりません。

恐縮ですが、どなたか分かる方がいればご教授お願いします。
0022nobodyさん2010/03/20(土) 22:50:56ID:???
>>21
まず基本から。
ひとつのリクエストは、Controllerが(必要に応じてmodelとやりとりしながら)処理し、最終的にviewを表示して終了する

で、addやeditアクションについては、[1]フォームを表示する[2]postデータを保存する、のふたつのリクエストを同じアクションで行っているにすぎない
postされたデータがあるリクエストであれば[2]を、なければ[1]を行っている
それぞれ別のリクエスト
0023nobodyさん2010/03/20(土) 23:02:23ID:???
>>20
動きました、ありがとうございます。
0024nobodyさん2010/03/20(土) 23:13:50ID:???
>>22
レスありがとうございます。

empty($this->data) ならば、フォームが表示される処理のみされる
(editの場合はreadされた値が代入され表示される)
ということですね。

丁寧に説明していただき、とても助かりました。
0025nobodyさん2010/03/20(土) 23:42:34ID:???
公式以外で入門サイトありませんか?
0026nobodyさん2010/03/21(日) 00:20:20ID:???
>>25
googleってサイトが便利らしいぞ
0027nobodyさん2010/03/21(日) 00:53:04ID:???
>25
素直に本買った方が早いと思う
0028nobodyさん2010/03/21(日) 10:11:29ID:???
>>27
本買うことにします

>>26
googleで検索してもたいして有益なサイトはありませんね、国内サイトしか見てませんけど
0029nobodyさん2010/03/21(日) 11:34:14ID:???
えっ!?
0030nobodyさん2010/03/21(日) 11:52:05ID:???
初心者向けの開発会の需要はあるかねえ?
前に誰かがやってた気がするんだけど
0031nobodyさん2010/03/21(日) 11:52:20ID:???
25=28=30
やっぱりcakephpは難しいのでCodeIgniterに移住します
公式のユーザーガイドが分かりやすくてフレームワーク初心者のぼくでもなんなくわかりやすいので
ありがとうございました
0032nobodyさん2010/03/21(日) 12:04:06ID:???
>>31
cakeもそんなに難しくはないので、また気が向いたら戻ってきてね
0033nobodyさん2010/03/21(日) 13:54:33ID:???
>>30
プログラマの将来のためにも
初心者向けの入り口は作ってあげたほうが良いよ。
まぁ、ほとんど挫折するだろうけど
0034nobodyさん2010/03/21(日) 14:05:16ID:???
入門はそんなに難しくないと思うけどな
カンタンでわりと実践的なチュートリアルを増やしたらいいかも
0035nobodyさん2010/03/21(日) 15:09:25ID:???
初心者向きのサイトはけっこうあると思うけどなぁ。
むしろ本だとbake中心だったりして実用的じゃない
0036nobodyさん2010/03/21(日) 16:25:52ID:???
常識的に考えてDBっていくつまで hasOne,hasMany,belongsTo していいものなの?
あんまりやりすぎても負荷がかかるんだろうけど。
4,5個つなげる程度なら問題ないのかな。
0037nobodyさん2010/03/21(日) 17:39:14ID:???
みんな開発環境って何使ってるの?
0038nobodyさん2010/03/21(日) 17:40:46ID:???
秀丸
0039nobodyさん2010/03/21(日) 17:55:22ID:???
>>36
実行速度と実行回数によりけりかな

>>37
VirtualBox + CentOS + vim
0040nobodyさん2010/03/21(日) 17:56:15ID:???
colinux+うぶんちゅ+秀丸
0041nobodyさん2010/03/21(日) 18:41:24ID:???
待ってろcakephp
俺は貴様を倒しに必ず戻ってくる
0042nobodyさん2010/03/21(日) 19:08:58ID:???
>>34
symfonyのQ&Aサイトのチュートリアルがあったと思うんだけど、あの程度のボリュームのやつがcakeであると良いと思う
暇と技術があれば俺が作りたいけど、どっちもあまりない
0043nobodyさん2010/03/21(日) 19:19:40ID:???
>>36
例えば普通のブログみたいなもんでも
記事にコメント、ユーザー、タグ、カテゴリー、トラックバック・・・って
いっぱいくっついてくるわけだしいいんじゃないの?
まあフィールドを選んだりcontainで必要なものだけ絞ったりはするけど。
0044nobodyさん2010/03/21(日) 21:40:38ID:???
SQLレベルに限って言えば、JOINの数なんてそんなに問題にならないと思うけどな
業務系システムだと3桁とか珍しくないし
0045nobodyさん2010/03/22(月) 07:12:01ID:???
3桁は珍しいんじゃないか?w
まぁなんにしても適切な結合で適切にインデックスとか
貼ってあれば問題なかろう
0046nobodyさん2010/03/23(火) 01:07:32ID:???
CakePHPの開発にトライしてみました。PHP自体、かなり初心者。

相当昔、仕事でJavaのStrutsというMVCフレームワークで
ガシガシ開発していたので、何とかなるだろうと思ったら、
意外につまづきました。主にひっかかったのは以下3点。

1点目:MVCのContollerでの設定方法が良く分からない
2点目:Modelの命名とテーブルの命名の関係性にはまる
3点目:ヘッダーのフッターの余分な表示どうにかなんない?

全て解決しましたが、



0047nobodyさん2010/03/23(火) 01:08:59ID:???
46です。間違ってカキコしてしまいました。

慣れれば快適なフレームワークですが、
ちょっと入り口は敷居が高い気がしました。

>>34 さんの「カンタンでわりと実践的なチュートリアルを増やしたらいいかも」
に同意です。
0048nobodyさん2010/03/23(火) 07:11:46ID:3JpwvDQY
sessionが使えない環境でsessionぽい使い道として、
Configure::read & writeを利用しようと思うのですが、
セキュリティ上まずい点はありますか?
0049nobodyさん2010/03/23(火) 07:48:44ID:fJcglhKE
よくわからんが、それってリクエスト毎のパラメータを引き継げるの?
0050482010/03/23(火) 08:29:31ID:???
GETでデータが来たら、
Configure::write('aaa', $_GET['nantoka']);
みたいにすれば、いつでもConfigure::read('aaa')で
内容を取り出せます。

Cookieを切っても保存されているのだけど
ちょっとどういう風に動いてる機能なのか、よくわからなくて。
0051nobodyさん2010/03/23(火) 09:10:10ID:???
てかそれ
あきらかにセッションごとじゃなくて
全員でひとつの設定になるよね
0052nobodyさん2010/03/23(火) 09:11:17ID:???
>>48
>>50のような使い方でセキュリティ上まずい点なんかないよ
0053nobodyさん2010/03/23(火) 09:55:42ID:???
CakePHPのドキュメントってなんであんなにわかりずらいの
CodeIgniterみたいな丁寧なドキュメント級のサイト作ってくれたらアフィ毎日踏んであげてもいいですよ
ttp://codeigniter.jp/user_guide_ja/toc.html
0054nobodyさん2010/03/23(火) 10:14:41ID:???
>>39>>43
>>44>>55

ありがとう!
以前レンタルサーバーで mysql too many connections ってエラーが出たのでSQL恐怖症で。
このエラーって一般的なレンタルサーバーだとめったに出ないものなのかな。

cakephp使ってないときだったので、sqlの組み方がおかしかったのかもしれなけど。
0055nobodyさん2010/03/23(火) 10:31:46ID:CwgG/vKY
ちょっと悩んでいます。
以下のように[ ] で配列を作りたい場合、cakeではどのように入力したらよいのでしょうか?

<input type="text" name="name[]" />


echo $form->input('name[]');
このようにやっても上手くいかず。。
0056nobodyさん2010/03/23(火) 10:45:51ID:???
>>55
sageてね

http://book.cakephp.org/ja/view/189/Automagic-Form-Elements
第2引数で指定してください
0057nobodyさん2010/03/23(火) 13:01:17ID:???
>>56
たしか第2引数で
name => 'hoge[]'

みたいに指定すると、Securityコンポーネントで弾かれるはず・・・
解決策はしらん。
0058nobodyさん2010/03/23(火) 13:24:29ID:???
>>54
同居人が多いレンタルサーバーだとどこでも接続数が絞られてるからエラー出るよ
チューニングするとか、キャッシュするとかしかない
0059nobodyさん2010/03/23(火) 17:42:20ID:???
>>58
ありがとうございます。
mysqlとサーバーはほとんど知識無いんですけど、専用サーバーなら出ませんかね?
次エラーがさくらマネージドにしようか考え中です。
0060482010/03/23(火) 22:07:17ID:???
>>52
なるほど

>>51
とりあえず、テストしたら全体でひとつの設定にはならないようです
なので、この方法を使ってみます。
0061552010/03/24(水) 08:07:39ID:???
ageちゃって申し訳ありません。

>>56
>>57

echo $form->input('Modelname.0.fieldname');
とすると解決しました!

ありがとうございます!
0062nobodyさん2010/03/24(水) 10:07:09ID:???
誰か初心者講座サイト作ってください
0063nobodyさん2010/03/24(水) 10:08:18ID:???
>>62
本一冊くらい買えばいいよ
0064nobodyさん2010/03/24(水) 10:39:46ID:???
cakephp1.3を使用しています
Paginatorでチェックボックス引継ぎって可能ですか?
10件ずつ表示したとして、次の10件に行っても以前の10件でチェック
していたチェックボックスは維持させていたいのですが。
可能でしたらやり方教えてくれませんか
0065nobodyさん2010/03/24(水) 10:41:16ID:???
>>64
cookieを使えばオケ
0066nobodyさん2010/03/24(水) 16:45:26ID:???
>>59
専用サーバーだって、mysqlの設定とアクセスの数によっては出る
その辺はcakephpじゃなくてmysqlの話になるのでmysqlスレいって聞いた方がいいよ
0067nobodyさん2010/03/24(水) 17:55:12ID:???
>>64
それは、Cakeに限らず普通にセッションで持たせれば良いんじゃないのかな?
0068nobodyさん2010/03/24(水) 23:38:26ID:???
cakephpで作成日時はcreatedですが、作成した人のIPや更新した人のhost、
などどう定義してますでしょうか?

作成した人のIP:created_ip
作成した人のHOST:created_host
更新した人のIP:updated_ip
更新した人のIP:updated_host

最後のdがdateのdであれば、以下のように定義?

作成した人のIP:create_ip
作成した人のHOST:create_host
更新した人のIP:update_ip
更新した人のIP:update_host

守ったほうがよい細かいDBの命令規則のページなどありましたら教えてほしいです。
0069nobodyさん2010/03/25(木) 00:09:57ID:???
>>68
>最後のdがdateのdであれば、以下のように定義?
-edは過去分詞形なんだが…。

それはさておき、作成した人、更新した人だったら
creator_ip、creator_host、updater_ip、updater_host
でいいんじゃないかと思う。

個人的にupdaterよりeditorのほうがしっくりくるんだけども。
0070nobodyさん2010/03/25(木) 00:36:15ID:???
>>68
マニュアルのモデルのところに出てる以外は別に決まってないので好きなようにどうぞ。

>>69 のように英語で考えてわかりやすいように・・・というか、
自分でコントローラーとかビューのコード書くときに「えっとフィールド名なんだっけ??」って
いちいち探さなくて済むように作っておけばいいよ。
0071nobodyさん2010/03/25(木) 09:17:02ID:???
http://www.imagecheese.com/gallery/lil.jpg

上記のページはユーザー情報のedit画面です。
アドレスに指定された$idを元に、データベースから情報を抜き出しています。(例では$Idが43)
この$idの部分を $hashで表示する方法はないでしょうか?

http://localhost/scrap/users/edit/43 (これが今のやり方)
http://localhost/scrap/users/edit/7c02d52cc1be46217793f002640553d7 (これで元データを拾いたい)


下記が現在のスクリプトです。

function edit($id = null) {
if (!empty($this->data)) {
if($this->User->saveall($this->data, array('validate'=>'first'))){
$this->Session->setFlash(__('The Data has been saved.', true));
}
}
if (empty($this->data)) {
$this->data = $this->User->read(null, $id);
$this->set('data', $this->data);
}
}


単純に$idを$hashにすれば上手くいくかなと思いましたが、上手くいかず。。お助けくださいませ。
0072nobodyさん2010/03/25(木) 09:23:01ID:???
>>71
read()じゃなくてfind()を使いましょう
マニュアル読んで、editアクションで何が行なわれているかを理解するところから始めると良いよ
0073712010/03/25(木) 09:32:04ID:???
>>72 
ありがとうございます!

スクリプトを以下のように書くとこうなりました。
http://www.imagecheese.com/gallery/ouo.jpg

function edit($id = null) {
if (!empty($this->data)) {
if($this->User->saveall($this->data, array('validate'=>'first'))){
$this->Session->setFlash(__('The Data has been saved.', true));
}
}
if (empty($this->data)) {
$conditions = array("hash" => $id);
$this->data = $this->User->findAll($conditions);
$this->set('data', $this->data);
}
}


データは取得できたけど、フォームに自動的に挿入されない。。
0074712010/03/25(木) 09:34:29ID:???
ちなみに Viewの部分はこちらです。

<?php echo $form->create('User',array("action"=>"show"));?>
<fieldset>
<legend><?php __('Edit Data');?></legend>
<?php
echo $form->input('address');
echo $form->input('Keyword.0.name');
echo $form->input('Keyword.1.name');
echo $form->input('Keyword.2.name');
?>
</fieldset>
<?php echo $form->end('Submit');?>
0075712010/03/25(木) 09:40:46ID:???
すいません!
findall じゃなくて findで指定したら上手くいきました!

なんて馬鹿なんだ。。
0076722010/03/25(木) 09:43:57ID:???
>>73-75
全部聞こうとしないで、試行錯誤してごらん
いつまでも使いこなせないよ
0077712010/03/25(木) 09:52:43ID:???
了解しました。
すぐに聞かずに自分で悩む時間を大切にします!

この試行錯誤する過程が一番身になるんですよね。。
0078642010/03/25(木) 17:45:28ID:???
cookieにsessionですか
すみませんがPaginetorでの具体的なやり方教えていただけませんか?
0079nobodyさん2010/03/25(木) 18:04:30ID:???
>>78
自分で調べろ
0080nobodyさん2010/03/25(木) 22:54:10ID:???
ヒントだけあげるとpaginator使おうが使わなかろうがフォームに値をセットするには
どうすればいいか考えればいい。
0081nobodyさん2010/03/25(木) 23:49:51ID:???
甘やかしすぎるのはよくないんじゃねーの。
ただ「教えてくれ」と言ってる奴ってダメだよ。
「ここまで調べたけど、ここが分からない」というのが本来の聞き方でしょ。
ダメ人間に餌を与えすぎると無意味に肥え太るぞ。
0082nobodyさん2010/03/26(金) 07:28:24ID:???
>>78
とりあえず、それぞれの値を保存、取得するのに
いくつかのやり方があるということ
どういうサイトを作っているのか、晒してくれれば
見にいくよ
0083642010/03/26(金) 09:23:56ID:???
POSTで渡すならすぐにわかるのですが
ちなみにチェックボックスは
<?php e($form->checkbox('Model.name.'.$id))?>
という形でこれをforeachで繰り返し出してます。
POSTで来るなら
foreach($this->data['Model']['name'] as $key => $value){
if($value == 1){

}
見たいな感じの処理でいいと思うのですが

もう少しpaginatorを勉強します
すみませんでした
0084nobodyさん2010/03/26(金) 11:40:01ID:???
>>83
paginatorというブラックボックスを前にして、たぶん本質とは全然関係なさそうなところで
引っかかってるだろうから俺は >>80 を書いたんだけども、
paginatorは一旦頭から切り離す。どのページに推移しようがやることは同じだって。
0085nobodyさん2010/03/26(金) 11:50:37ID:???
>>83
javascript使ったらどうかな?
0086642010/03/26(金) 13:12:20ID:???
すみませんやりたいことを初めから準に書きますね。

まず、検索フォーム(page_contololler)から『アイス』と入力して検索
データベースから『アイス』を含むユーザーを取ってきます。

ここは
// 検索条件
if (env('REQUEST_METHOD') == 'POST' ) {
$this->Session->write('pageHash', $this->data['Page']);
$conditionsHash = $this->getWhereParameters($this->data['Page']);
} elseif (isset($this->passedArgs['Page'])) {
$this->data['Page'] = $this->Session->read('pageHash');
$conditionsHash = $this->getWhereParameters($this->data['Page']);
} else {
$this->Session->delete('pageHash');
$conditionsHash = array();
}
//検索条件

function getWhereParameters($pageHash) {

$conditionsHash = array();

$conditionsHash['name' Like ?] = $pageHash['page']['name'];
}

$this->paginate = array('Model' => array('conditions' => $conditionsHash,
'limit' => 10
'page' => 1));

こういった感じで$conditionsHashをsessionで渡して
paginatorの次へを押した場合検索条件を引き継ぐようにしています。
0087642010/03/26(金) 13:16:17ID:???
ここでリスト一覧にさっきのチェックボック(チェックのON,OFF可能)を持ったユーザが一人一人
出てくるわけなのですが。
paginatorの 次へ>> や << 前へを押した場合に
自分でチェックをつけたチェックボックスを維持したままページを移動したいのです。

それで最後にチェックの入ったユーザだけを取り出すというシステムです。

やはり表示上は裏で全部出してjavascriptでの制御が簡単なんですかね
0088nobodyさん2010/03/26(金) 13:29:56ID:???
>>87
次へ>>をsubmitにすれば、controllerでsessionに保存したりできるよね
しかし、どちらにせよjavascriptは使うのではあるまいか、と思います
0089nobodyさん2010/03/26(金) 13:31:55ID:???
面倒だから検索条件をserializeしてセッションでわたせば。
0090nobodyさん2010/03/26(金) 13:38:22ID:???
ページングしてるページ毎のチェックボックスの状態を記憶せにゃらならんのでしょ。
自分だったら

1)チェックボックスにonclickイベントつけて、ユーザーIDとチェック状態を非同期送信
2)1)をサーバー側のアクションで受けて、DBなりセッションなりに溜めとく
3)あとは溜めたステータス情報を持ち回って、煮るなり焼くなりお好みひゃっほー

あ、昼休みおわた
0091nobodyさん2010/03/26(金) 14:55:35ID:???
SQLのログでさ、
SQLへの負荷 はどれをみればいいのかな。
Nr Query Error Affected Num. rows Took (ms)

おしえてちょんまげ。
0092nobodyさん2010/03/26(金) 15:09:30ID:???
>>91
そのなかなら Took (ms)
ms = micro seconds
0093nobodyさん2010/03/26(金) 15:45:33ID:???
>>92
ご親切にありがとう!
ちなみにどれくらいまでが問題無い範囲なんだろ。

合計が 100越えたら重すぎるとか、300までなら余裕とか。
もちろんアクセス数などにもよるだろうけど。
0094642010/03/26(金) 15:48:19ID:???
いろいろな意見ありがとうございます。
今後じっくり考えてやってみます。
ただ、今回は時間があまりないのと自分自身のスキルがたりないのもあってで
ttp://css-eblog.com/javascript/javascriptpaging.html
を使ってすることにしました。

ありがとうございました。
0095nobodyさん2010/03/26(金) 16:19:18ID:???
一画面に全部のデータを読み込むのかな
ありっちゃありだけど
0096nobodyさん2010/03/26(金) 19:09:52ID:???
yahooや楽天のように、ログインしているとユーザ専用のリンクが見えて、非ログイン時には
その旨をメッセージで表示するにはどうすればよいのでしょう。
(viewで表示分岐するのは分かるんですが、その前のAuthでどうするか)

非ログインユーザはゲストとして自動的に認証させる?という方法しか
思いつかないのですが、スマートな方法はありませんか。
0097nobodyさん2010/03/26(金) 19:14:59ID:???
??
現状でログインしているかどうかの判断で振り分ければいいのでは?
0098nobodyさん2010/03/27(土) 11:07:00ID:???
>>94
全データが多くなければそれでもいいと思う
1.3は触ってないからわからないけど
1.2なら、paginatorヘルパーで出力するときに引数でFORMのパラメータ渡せば
検索条件付のURLによるページングも作れる
0099nobodyさん2010/03/27(土) 13:02:02ID:???
>>96
Auth使ってるなら
$this->Auth->user()
で中身確認できたと思うけど
issetとかで判断すればいいんじゃない?
controllerね
0100nobodyさん2010/03/27(土) 18:21:26ID:???
最近マニュアル読まないで質問する人増えたなあ
基本的なことは一通り書いてあるけどねえ
0101nobodyさん2010/03/27(土) 18:25:10ID:???
自由に質問させてあげればいいんじゃないかな
答えるのは俺らの自由なんだし
0102nobodyさん2010/03/27(土) 19:04:05ID:???
ルビ厨にCakeは欠陥品とか言われてんぞw
http://pc11.2ch.net/test/read.cgi/php/1217883614/447
0103nobodyさん2010/03/27(土) 20:46:53ID:???
別に気にならない
0104nobodyさん2010/03/27(土) 21:30:03ID:???
そもそもrails自体最初はPHPで実装しようと思って失敗してRubyに切り替えられたものなので、
railsユーザーから見たら(Cake)PHPがNGなのは当然と言えば当然のような
0105nobodyさん2010/03/27(土) 23:09:29ID:???
欠陥品じゃない言語・FWなんて歴史上存在したことがない
0106nobodyさん2010/03/28(日) 15:54:08ID:???
んだね。何使ってたって上手くいかないときには「〇〇はクソ!」とかって吠えたくなるときあるもんね。
0107nobodyさん2010/03/28(日) 17:07:23ID:???
それ、むしろカチンときてるっぽぃ
0108nobodyさん2010/03/28(日) 17:17:43ID:???
CakePHPの開発者が離脱したらしいけど
CakePHPに影響あるかね?
0109nobodyさん2010/03/29(月) 09:56:07ID:???
CakePHP 1.3.0-RC3 unleashed
http://bakery.cakephp.org/articles/view/cakephp-1-3-0-rc3-unleashed
0110nobodyさん2010/03/29(月) 09:56:40ID:???
これはstableでるのも近いかも
0111nobodyさん2010/03/29(月) 10:33:52ID:???
cakephpは delete や save などの機能を使う時にデータテーブルのidを参照するようにみえます。
ということは、下記のようにidなしのkeywordsテーブルを作成するのはNGなのでしょうか?

usersテーブル
id, address,

keywords テーブル
name, user_id (二つ合わせてプライマリーキー)

0112nobodyさん2010/03/29(月) 10:39:50ID:???
>>111
複合プライマリーキーはNG
idを別途用意しておくべし
0113nobodyさん2010/03/29(月) 10:53:18ID:???
>>112

やはり。。いろいろやっても上手く動かなくて悩んでました。
ありがとうございます!

実はkeywordsテーブルで name と user_id が重複しないようにしたかったのです。

ローソン(name), 13(user_id)
ローソン(name), 13(user_id)
このように、データが重複しないように。

調べたところ、Cakephpにはそういったデータ用の関数はなさそうです。

直に MySQLの replace を書き込むのが吉でしょうか?
0114nobodyさん2010/03/29(月) 11:08:41ID:???
>>113
1.3ならvirtualFieldのisUniqueでいけそうな気がするが
1.2なら独自バリデートかな
0115nobodyさん2010/03/29(月) 11:13:39ID:???
>>114

1.2です。
やっぱり独自バリデートのコードを使用するのがベストっぽいですね。
ありがとうございます。
0116nobodyさん2010/03/30(火) 00:21:02ID:???
DB側にユニーク制約つければいいんじゃないの?
0117nobodyさん2010/03/30(火) 13:39:29ID:???
cakeでエラー出るやん
0118nobodyさん2010/03/31(水) 12:25:20ID:???
さくらレンタルサーバ、cron設定で上手くいかず、、どなたかお助けくださいませ。

http://domainname.sakura.ne.jp/scrap/users/action
上記のアクションをcron設定したいです。


www/scrap/app/webroot/cron.php
「webrootにcron.phpを作成」
<?php
$_GET['url'] = "/scrap/users/action";
require_once ( dirname( dirname( dirname(__FILE__))) . "/index.php" );
?>


さくらのサーバコントロールパネルのcron設定 【実行コマンド】
cd /home/domainname/www/scrap/app/webroot ; /usr/local/bin/php cron.php


このように設定して、3月31日12時10分など、数分後の設定にして試してみても、上手くいきません。。

【参考にしたURL】
http://www.happyquality.com/2009/11/18/1088.htm
http://www.multiburst.net/ElectricBrain/2009/04/how-to-use-cron-on-cakephp
http://memo.mkmin.com/cakephp/?p=8

0119nobodyさん2010/03/31(水) 16:53:41ID:???
何が上手くいかないのか書けや
0120nobodyさん2010/03/31(水) 21:01:56ID:???
>>119

users/action がcronでちゃんと実行されないのです。。
0121nobodyさん2010/04/01(木) 04:55:05ID:???
>>120
「ちゃんと実行されない」????
神様やスーパーマンじゃないんだから、「ちゃんと実行されない」と書かれてもお前が
何に困っているか?原因は何か?わかるわけないだろ!!!

表示されているエラーメッセージさらせ!

さくらレンタルサーバにも色々あるけど、どれ使ってる???
http://www.sakura.ne.jp/index.php
サーバに負荷掛けない為のcron使用時の制約はどうなってんの???
詳しい情報をさらせ!!!

cronがまったく動かないの?
他の物はcron正常に動くの??
0122nobodyさん2010/04/01(木) 06:55:57ID:???
ちょっと、怖いよw
0123nobodyさん2010/04/01(木) 07:30:37ID:???
ちゃんと叱ってくれる >>121 はとてもマシだと思うぞ
0124nobodyさん2010/04/01(木) 09:32:30ID:???
そう思うが、徹夜明けのイライラをぶつけられてもw
0125nobodyさん2010/04/01(木) 09:43:35ID:???
シカトされるよりは、いいな
優先事項は、問題を解決することだ
0126nobodyさん2010/04/01(木) 09:56:57ID:???
>>118
みんなの優しさに感動したからマジレスする

そのやり方なら、URL叩くと、アクションが実行されるよね?
動くなら、さくらのcronの設定という問題じゃない?
ほかのcronのスクリプトが動くかどうかを試したかな?
分からなければCakePHP関係無しに調べると良いよ
0127nobodyさん2010/04/01(木) 09:59:56ID:???
まずは、
cd /home/domainname/www/scrap/app/webroot ; /usr/local/bin/php cron.php
これが動くのか、確認しようぜ

動くならcakeの問題じゃなく、cronの設定不備だと思う
0128nobodyさん2010/04/01(木) 10:34:58ID:???
まずcronの実行ログ確認しなよ
01291182010/04/01(木) 11:00:53ID:???
みなさん、暖かいアドバイスありがとうございます!

まずはcronの実行ログを確認する方法をさくらで調べてみます。

>>121

さくらのスタンダードです。 制約は1時間に一回のみです。
http://www.sakura.ne.jp/index.php

>>126

http://domainname.sakura.ne.jp/scrap/users/action
のURLを叩くと問題なくアクションは実行されます!


>>127.128

cronの実行ログがどこで見るかわからなかったので、先走ってしまいました。
まずは実行ログを探してきます!
0130nobodyさん2010/04/01(木) 11:33:27ID:???
CakePHPはよくしらんけど、どうしても駄目なら
wget http://domainname.sakura.ne.jp/scrap/users/action
をcronで呼ぶとか
01311182010/04/01(木) 12:05:53ID:???
>>130

レスありがとうございます。なんとか、上手く動きました! dirnameの階層が間違っていたようです。
さらに、cronのエラーメールも、さくらの初期パスワード設定を入力していなかったので届かなかったようです。

最終的な設定は以下です。

www/scrap/vendors/cron/scrape.php
<?php
$_GET['url'] = "/users/action";
require_once dirname(dirname(dirname(__FILE__))) . '/index.php';
?>

【さくらのcron設定】
cd /home/domainname/www/scrap/vendors/cron ; /usr/local/bin/php scrape.php

みなさん、暖かいアドバイスどうもありがとうございました。。
0132nobodyさん2010/04/01(木) 20:16:24ID:???
年度はじめの今日がサイトオープンラッシュだったところが多かったんじゃないでしょうか。
開発者の皆さん、ひとまずお疲れ様です。
皆様は今夜旨い酒が飲めていますように。。。
未だ修羅場の職場より逃避カキコ sage
0133nobodyさん2010/04/01(木) 23:51:38ID:???
FWが開発効率が数倍良くなるから、ウェブ開発で徹夜したりデスマーチになったりと言うことはなくなる!はずだった…
0134nobodyさん2010/04/02(金) 00:37:40ID:???
デスマの原因は開発効率じゃないからな
0135nobodyさん2010/04/02(金) 00:41:07ID:???
自分みたいなデザイナーでもFWのおかげでいろいろいじれるのはありがたい
うけられる仕事の幅も広がった。
でも仕事がどんどん難しくなっていく…勉強ばっかりだ
0136nobodyさん2010/04/02(金) 03:37:20ID:???
オープン・リフレッシュは3月最終週にした

・・・はずだった
0137nobodyさん2010/04/03(土) 07:39:42ID:???
>>133
日本人の質を低下させたのは実はゆとり教育などではなく馬鹿でもチョンでも学士様に仕立て上げる悪平等教育なんだよ
今やむしろチョン様大歓迎だろ
昔の日本はドイツ式で大学へ行くのは本当に優秀な人間だけで普通の子は小学校へも行かず奉公へ出たもんだ
戦前世代だとそういう中から優秀な経営者や作家が生まれているだろ
脱ゆとりも結構だけどこの悪平等の是正なくして日本は再生しないよ
0138nobodyさん2010/04/03(土) 22:20:39ID:???
>>137
小さい時から、目標がある人間は、それで良いが、
やりたい事に気がついて、勉強できる環境が、ないのも微妙だろ。。。

実際、ほんとにやる気がある人間は、30でも40でも勉強出来る環境に行くけど、
全員そんなに意思は固くない。
0139nobodyさん2010/04/05(月) 16:39:35ID:???
デザイナーというか、HTMLコーダーさんと連携するときどうしてる?
一旦HTMLコーディングしたものを、こっちでVIEWのテンプレートに書き換え?
0140nobodyさん2010/04/05(月) 16:44:30ID:???
>>139
それが普通でしょ
デザイナーにphpを強要するの?
0141nobodyさん2010/04/05(月) 18:45:04ID:???
1.2.6ですが、ブログチュートリアルを参考に簡単な
マスタテーブルの表示・追加・削除画面を作っているんですが
Modelのsaveが実行されません。(INSERTされない)

function add(){
if (!empty($this->data)) {
if ($this->JimushoMaster->save($this->data)) {
$this->flash('Your post has been saved.','/jimusho_masters');
}
}
}
こんな感じで行ってるんですがナニが悪いんでしょう?
モデルJimushoMasterはid(int, unsigned, auto_increment)とname(varchar)しか
ない簡単なものです。

add.ctpでは

<h1>事務所追加</h1>
<?php
echo $form->create('jimusho_master');
echo $form->input('name');
echo $form->end('保存');
?>

とだけしています。
0142nobodyさん2010/04/05(月) 18:55:28ID:???
>>141
これだけじゃ詳しくは分からんけど、validateに失敗しているんじゃない?
debug($this->JimushoMaster->invalidFields());
をsave失敗時に実行してみたら何か入ってるんじゃないかな

saveされないというのはSQLが実行されずにaddのフォームが表示されるんだよね?
0143nobodyさん2010/04/05(月) 18:58:10ID:???
あとついでだけど、今のうちに規約に沿う癖をつけといた方が良いよ
Office / offices / OfficesController
0144nobodyさん2010/04/05(月) 22:59:55ID:1CfLL9NS
入力値のバリデーションを行なう前に
半角に変換したいのですが、
そういう処理はどう書けばいいでしょうか?
0145nobodyさん2010/04/05(月) 23:16:53ID:???
バリデーションに投げる前の段階でPHPで書けばいいと思うよ
0146nobodyさん2010/04/05(月) 23:20:10ID:???
beforeValidateでいいんじゃないの?

とにかくマニュアルは一通り目を通しておこうよ。
覚えなくてもいいけど、どこでどんな処理ができる・・・ってだいたい見当つくでしょ。
0147nobodyさん2010/04/05(月) 23:23:16ID:???
コントローラの中でモデルに渡す前にフィルタかけるしかないですね・・
0148nobodyさん2010/04/06(火) 01:21:23ID:???
146から147の流れになることがよくわからん
0149nobodyさん2010/04/06(火) 04:05:02ID:???
beforeValidateはモデル内のことなので
中でdataを加工してもviewまで引っ張れないのですよ
0150nobodyさん2010/04/06(火) 09:43:10ID:???
>>149
何でviewに変換後のデータが必要かは知らないけど、それが書いてなきゃ分からんでしょ

やろうと思えばModel内で加工することもできるし
0151nobodyさん2010/04/06(火) 18:16:24ID:???
>>142さん

ご助言ありがとうございます。
saveの返値は1でしたので成功しているようです。
が、やはりデータベースにINSERTされていないようです。

念のため、save後、debug($this->JimushoMaster->invalidFields());
してみましたが空っぽなのでバリデートの失敗ではないようです。

レールから脱線しますが、
$this->JimushoMaster->query('INSERT INTO jimusho_masters (name) VALUES (\''.$this->data['jimusho_master']['name'].'\');');
のように無理やりSQLを指定して実行すると問題なくINSERTされました。

うーん、ナニが悪いんでしょう。ケーキ食べ始めなのでわからんす。
0152nobodyさん2010/04/06(火) 21:06:46ID:???
>>151
期待通りの動きをしないときはとにかくdebug()をあちこちにぶっ差して
どういうデータが来てるか見る。あとdebugモード2の時のSQLダンプをよく読むのがいいです。
0153nobodyさん2010/04/07(水) 02:07:26ID:???
debug()はよく使うのだけど、boolean型もしっかりとどの値か表示してほしいな
0154nobodyさん2010/04/07(水) 10:12:26ID:???
>>151
ん?ということは、リダイレクトしているということ?
だったら、発行されたSQLとか見て原因探ればいいんじゃない?debugは2にしてるよね?

Insertされないというのをもうちょっと具体的に書いてみてちょ
01551512010/04/07(水) 16:13:32ID:???
すいません、Cake焼き始めなものでよくわかってなく
説明も下手ですね。

if( $this->JimushoMaster->save($this->data) ){
$this->redirect('/jimusho_masters');
}else{
debug($this->JimushoMaster->invalidFields());
}

現在のコードはこんな感じです。
実行すると、レコードが追加されずに/jimusho_mastersにリダイレクトします。

saveは成功したという結果が返っているんですが、
レコードは増えていない画面に戻ります。

Validateが失敗していれば、エラーがでるはずですが
なにも表示されないのでエラーではないようです。

デバッグモードで画面下にクエリが出るんですが
そこにはINSERT文がないので、saveを呼び出しても
INSERTクエリが実行されてないようです。
0156nobodyさん2010/04/07(水) 17:24:09ID:???
>>155
読み返してみた。
第一引数はモデル名じゃなかったかな?
echo $form->create();
or
echo $form->create('JimushoMaster');
にしてみてどう?
01571512010/04/07(水) 17:41:43ID:???
>>156さん

なおりました!ありがとうございます!
なるほど、$formヘルパでcreateするときにモデル名を
指定するんですね。やっと解決できました。

ご助言ありがとうございます!
0158nobodyさん2010/04/07(水) 18:17:38ID:???
>>157
よかった。今後は英単語で命名するようにねw
0159nobodyさん2010/04/09(金) 01:42:43ID:???
キーボードの半角/全角漢字の列にある
1〜0までの数字を使ってる人いる?
1を押したときにShift押さなくても!が出るようにしてない人て
頭おかしいよね
0160nobodyさん2010/04/09(金) 04:23:45ID:???
ファイル(画像とか)のアップロード管理何つかってますか?
追加・更新・削除できるものでお勧めあったら教えてください
MediaPluginは更新が出来なかった
0161nobodyさん2010/04/09(金) 09:54:40ID:???
>>159
うん。頭おかしいと思う。

>>160
Mediaplugin更新できるでしょ。
ファイルアップロード系は導入するのが面倒で複雑だけど、
がんばってMediapluginを使うようにした方がいい。
自作するよりスピーディーだし、かなりうまく設計されていると思う。

そのレベルの話なら公式で聞いてみたらどうでしょ。
0162nobodyさん2010/04/09(金) 21:11:05ID:???
>>161 ありがと。もうちょっと試行錯誤してみます。
0163nobodyさん2010/04/10(土) 00:06:40ID:XPBwMnMW
layoutに変数を渡したいのですが、
どうやればいいですか?
0164nobodyさん2010/04/10(土) 00:09:03ID:???
$this->hogeに渡すと思い込んでましたが
setするんですね
失礼しました
0165nobodyさん2010/04/10(土) 14:31:33ID:???
1994年生まれの人集まれ!★3
http://gimpo.2ch.net/test/read.cgi/nendai/1269784099/
0166nobodyさん2010/04/11(日) 21:25:47ID:???
Authコンポーネントで質問です。

http://www.facebook.com/

このfacebookのindexページのように、ログイン画面と登録画面をindexに置きたいです。

Authだと、Auth用のusersコントローラを独立して作らないといけない? みたいなのですが、
自分の目的にはAuthを使えるでしょうか?

FaceControllers内
function index, functon edit, function add. function login, function logout,
などと、ひとつのコントローラに納めないとできないのではないかと思ったりして悩んでおります。

たぶん大きな勘違いかと思うのですが、どういうイメージでAuthを使えばよいのでしょうか?
0167nobodyさん2010/04/11(日) 21:46:51ID:???
トップはフォームだけで、フォームからUsersコントローラーのaddアクションを呼べばいいのでは?
0168nobodyさん2010/04/12(月) 09:52:15ID:???
>>167

ありがとうございます。
いろいろと試してみます。
0169nobodyさん2010/04/12(月) 11:19:42ID:???
Authコンポーネントを使うと、

Cannot modify header information - headers already sent by

というエラーが出てしまいます。

調べたところ、

<?php ?>の上下の改行をなくす、php.iniでoutput_bufferingをonにする。
などの解決方法がありますが、試しても上手く行きませんでした。

layoutもデフォルトなのでheaderの部分を別個書いた記憶もなく、
ほとほと困り果てました。


なにかほかに解決方法はないものでしょうか?
0170nobodyさん2010/04/12(月) 12:13:51ID:???
>>169
appコントローラーで何か文字を出力してるんじゃないの?
0171nobodyさん2010/04/13(火) 05:20:46ID:4rbnTecY
携帯からのアクセスの場合だけ使いたいヘルパーがあるのですが
動的にヘルパーを読むにはどうしたらいいですか?
0172nobodyさん2010/04/13(火) 13:09:50ID:???
>>171
普通にの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
0173nobodyさん2010/04/13(火) 13:10:31ID:???
PC が抜けてた

普通にPCの場合も読んでおけばいいと思うけど、どうしても携帯の時だけというのなら
app::importとかでいいんじゃない?
0174nobodyさん2010/04/13(火) 14:41:15ID:???
CakePHP 1.3.0-RC4 キタ━━━━━━(゚∀゚)━━━━━━ !!
http://bakery.cakephp.org/articles/view/cakephp-1-3-0-rc4-has-arisen
0175nobodyさん2010/04/13(火) 14:41:46ID:???
This release marks the last release candidate, before 1.3.0 goes to stable.
とあるので、すたぶるが来る日も近そうです
0176nobodyさん2010/04/13(火) 15:19:57ID:???
今度のは、どんなバグが待っているのだろう...
0177nobodyさん2010/04/13(火) 16:35:06ID:???
1.2.0のときバグなんてあったっけか?
0178nobodyさん2010/04/13(火) 16:40:10ID:???
AuthComponent がバグっていたような
0179nobodyさん2010/04/13(火) 16:55:01ID:???
ああ、あったねえ。
でも、それって、1.1でも1.2でも穴空いてたような
0180nobodyさん2010/04/14(水) 00:09:32ID:???
>>174
昨日の夜に見たときは、なかったんだけどな…日付改竄?キャッシュ?

>>175
このペースでいけば4月26日かな?
01811802010/04/14(水) 00:12:06ID:???
見たの昨日の夜じゃなくて、一昨日の夜だった
スレ汚しスマン
01821692010/04/14(水) 09:53:38ID:???
>>170

どうもありがとうございます。
なぜかmodelフォルダのファイルを作成し直したら直りました。
おそらく、ファイルの文字コード関係が怪しいと思ったのですが、結局原因は特定できず。。


ちなみに、Authコンポーネントを使う時は、

pages_controller, users_controller

などと、別途usersのコントローラを作成しますが、
これはわかりやすくするために分けるだけで、一つのコントローラに統合することも可能
ということでしょうか?
0183nobodyさん2010/04/14(水) 10:08:05ID:???
>>182
ファイル末尾の ?> を削除するところから始めたら良いことあるかもね

Authについては、まず、Userモデルを使って何か動かしてみれば良いんじゃないかな?
手を動かしたほうが早く身につくよ
01841692010/04/14(水) 10:18:49ID:???
>>183
レスありがとうございます!

末尾の ?>も排除したりいろいろしたのですが、結局上手くいきませんでした。。
どうもDOM付エンコードとかそっち系かなとにらんでおります。

Authは実際に動かしているのですが、usersコントローラのものを
pagesコントローラに少しずつ動かしても結構動くので、もしかして
全部移動できるかな? と思ったのです。
0185nobodyさん2010/04/14(水) 10:29:59ID:???
>>184
そりゃ動く
でも、意味がない

しかもよりによってPagesControllerだと、何のため?ってことになるし、単にメンテがしにくくなるだけのような気が

今後もCakePHPを使っていくつもりなら、CakePHPの思想に従ってみたらどうか
01861692010/04/14(水) 10:56:37ID:???
>>185

わかりやすい解説ありがとうございます。
cakeの思想に従うことにして、すっきりするようにします。
0187nobodyさん2010/04/14(水) 12:56:22ID:???
validateで質問させてください。
入力時にkeywordsテーブルの name フィールドをチェックしたいです。

class Keyword extends AppModel {
public $validate = array(
"name" => VALID_NOT_EMPTY,
);
}


しかし、viewでは 

$form->input('Keyword.0.name');

上記のように配列仕様の入力なので、validateが上手くいきません。
$form->input('Keyword.name'); と書けば動くのですが。

上手い方法はないものでしょうか?

0188nobodyさん2010/04/14(水) 13:18:29ID:???
>>187
アソシエーションの設定とControllerのsave周りを詳しく
0189nobodyさん2010/04/15(木) 00:04:30ID:???
みんなviewはphpコード書きまくり?

はるか昔smarty使ってたこととか、デザイナーにphpいじらせたくないこととか考えると
smarty組み込みたいんだけど、ヘルパーの引数に配列が渡せなくて詰んだ。
参考サイトは山ほど見たんだけど、$this->aa('key1','value1') で配列生成できているところまでは確認したけど
ヘルパー引数にほりこんでもヘルパーが動かない。。。
0190nobodyさん2010/04/15(木) 09:53:08ID:???
>>189
ここは見た?
http://d.hatena.ne.jp/am11op/20070614/1181837256

個人的にはSmartyなぞ必要ないと思っているが、使いたいヤツがいるのでしかたなく...
0191nobodyさん2010/04/15(木) 10:06:32ID:???
>>190
きめえwwwそこまでせねばらなんものかwww
いやそこまでせねばならんからそうしてるんだろうけど。
0192nobodyさん2010/04/15(木) 10:39:21ID:???
>>189
view で使う程度のphpなら直接デザイナーに教えた方がいいと思うが。
smarty なんて 今の時代に cgi 使ってプログラムやってるようなもん。
0193nobodyさん2010/04/15(木) 10:40:53ID:???
>>190
つかそこまでやるやつがなぜbakeにこだわるのかがわからん
0194nobodyさん2010/04/16(金) 16:07:48ID:???
>>192
きっとデザイナがviewの中で変なphp書くのが嫌なんだろ
0195nobodyさん2010/04/16(金) 16:41:46ID:???
つーか、下手にデザイナにviewいじられるとバグの温床になる気がするんだけど。
さわらせている人っているのん?
0196nobodyさん2010/04/16(金) 17:00:25ID:???
システム作ってからデザインさせることになると、デザイナがviewをいじるんじゃないのか
やったことないけど
0197nobodyさん2010/04/16(金) 17:10:39ID:???
プログラマが「ここにこんなループが来るからその部分のデザインたのむ」って
言えばいいだけでは?

一人で全部まかなってるフリーの立場からしたらプログラマとデザイナがそれぞれ
自分の仕事だけやってればいいなんてうらやましい。だからもっと話して
連携すりゃいいのにと思うなぁ。
0198nobodyさん2010/04/16(金) 17:14:40ID:???
ありきたりのデザインなら自分でできるが
アーティスティックなのを請け負うと、デザイナ必要になるよね

大抵、ループを説明するより自分でいじったほうが速い
0199nobodyさん2010/04/16(金) 17:23:20ID:???
ああそうか
見た目だけじゃなくて、機能を考えたら
例えばリストにするよりか、プルダウンにしたほうがいい
なんてことになって、それならAJAXつかっちゃおうとかに
なったりしたら、デザインもプログラムもいろいろ
いじるところが出てくるな
となるとどっちを主導でいくかってところで難しくなるのか
なるほどなるほど。

それならいっそう話し合いをして連携しないといけないと思うけど
そういう仕事ってディレクターとかコーディネーターみたいなのが
間にいるもんなんじゃないの?
自分で勝手にいじったらいろいろややこしくなるような気がする。
0200nobodyさん2010/04/16(金) 19:01:38ID:???
デザイナー、プログラマー以上にまともなディレクターが少ないのがこの業界の癌だよな
0201nobodyさん2010/04/17(土) 00:35:56ID:???
ならば貴公がなればよかろうに
0202nobodyさん2010/04/17(土) 00:55:04ID:???
政治家の文句も言うが、じゃあ政治家になれと言われたことはなかった
0203nobodyさん2010/04/17(土) 12:57:20ID:???
なるほど!
そういうことか。
本心では「政治なんて誰がやっても同じ」と思ってるから、
政治家になれとは言わない。
それと同じようにWebのディレクティングも誰がやっても同じだから・・・。
02041892010/04/17(土) 13:52:28ID:???
皆様コメントありがとうございます

>>190 さんの紹介してくれてる記事はもちろん試していて、
$this->aa()でview内でarray生成はできるけど(自作関数内var_dumpで確認)、helper内だとうまく渡せないんです


議論がされてますが、デザイナーにPHP触らせたくないというのが理由です。
こちらデザインは素人レベルでシステムのみ対応しているため、発注元にデザイナーを別途雇ってもらうケースが多いのですが
そのときにコードぐちゃぐちゃにされて「動かないからなんとかしてくれ」となるのが面倒なんですよ
(自作の各種パッケージをちょっとカスタマイズして売る、というやり方を副業でやっているので・・・)
あとはクライアントがsmarty指定するケースも多いです

もう少し軌道に乗ったら、提携デザイナーさんを何人か探して、
その人達を紹介するやり方にかえようと思います。

そんなわけで、1.3からはPHPコードべた書きでいこうと思います。
0205nobodyさん2010/04/19(月) 16:55:28ID:WgJ57/BK
cakeインストールしたところです
Cake is NOT able to connect to the database.
と言われましたが、当面はDBを使いません。
このメッセージが出ないようにするにはどうすればいいのでしょうか?
0206nobodyさん2010/04/19(月) 19:56:16ID:???
グーグル先生に聞くといいよ。

http://www.google.co.jp/search?hl=ja&rlz=1B3GGGL_jaJP283JP283&q=cakephp+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%80%80%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
0207nobodyさん2010/04/19(月) 22:23:19ID:faTvhF7k
以下の処理を実現させたいのですが、CakePHPを初めて2週間の初心者ですので、どのようにすべきか分かりません。ご教授頂きたい。

1.あるテーブルの内容を一覧で表示。(各行にはチェックボックスがある)
2.一覧のチェックボックスにチェックが付いているものを、submitした時、別画面の一覧に表示させたい。

2番の処理をどのようにしたら良いでしょうか?
02081512010/04/19(月) 22:37:03ID:???
チェックされたIDをfindでひっぱってきて表示すればいいんでないの?
0209nobodyさん2010/04/19(月) 23:48:06ID:faTvhF7k
>>208
返信ありがとうございます。

具体的なコードを書いてくれるとありがたいです。
質問内容が抽象的で申し訳ないのですが…
初心者ということで勘弁してください。
0210nobodyさん2010/04/20(火) 01:53:35ID:???
ざけんなボケ
0211nobodyさん2010/04/20(火) 03:02:03ID:???
cake以前じゃね?
0212nobodyさん2010/04/20(火) 11:21:01ID:???
春ですね
0213nobodyさん2010/04/20(火) 23:34:34ID:???
初心者を免罪符にするとフルボッコになる
これテストにデルから覚えておくように
0214nobodyさん2010/04/21(水) 01:33:25ID:???
>>207
優しい俺が優しく解説致します。
2番の処理を、CakePHPとは関係なくあなたのお使いの言語環境(おそらくPHP)を使って
どのように実現するのか、考えてみれば自ずと分かります。
Cakeで楽になる部分はあっても、素のPHPで(自分のスキル的に)いかんともしがたい部分を
Cakeが良きに計らってくれるというわけでは、必ずしもありません。
季節の変わり目、まだまだ寒い日もあるかと思いますので、ご自愛下さい。
0215nobodyさん2010/04/21(水) 14:44:22ID:???
自分で初心者と言うような人でさえさわるようになったってことはcakeもずいぶんメジャーになったんだな
0216nobodyさん2010/04/21(水) 14:49:53ID:???
初心者なら素直にステップ1から順に踏んで行くほうがいいよね
いきなりcakeから入るより結果的にはそのほうがはやく覚えられると思うし
っていうかPHPなんかちゃんと勉強すれば2日か3日ぐらいでだいたい把握
できるんだからそれを省略すんなよと…
0217nobodyさん2010/04/21(水) 21:06:23ID:???
PHPが原付免許で、cakeはオートマみたいなもんだなレベル的に
PHP学習しても理解できないとか知的障害レベル
0218nobodyさん2010/04/21(水) 21:14:37ID:???
PC触って3日目の子が頑張れば構築できるのがcakeなのに
知的障害とかアホか
0219nobodyさん2010/04/21(水) 21:34:45ID:???
誰か218を日本語に翻訳してくだしあ
0220nobodyさん2010/04/21(水) 21:42:26ID:???
英語が出来ないと辛いぞ
0221nobodyさん2010/04/22(木) 12:04:30ID:???
知的障害は言い過ぎ。
0222nobodyさん2010/04/22(木) 18:04:46ID:???
>>207
もう見てないだろうけど
DBから一覧を取得したと時に各ユーザー(例えばね)のIDも取得してると思うけど
多分、find('all')で取得でforeachだよね?
<? e($form->checkbox('Model.name.id'))?>
submitで来たあとは1が入ってる人を一覧費だけじゃないかな

0223nobodyさん2010/04/23(金) 04:16:55ID:???
人それぞれ成長の度合いって物がある。
自己満足のためだけに発言する自分の卑しさを省みてみなよ。

ひとまずPHPの基本的な本を読んだほうがいい感じだけどね。
他の言語も含めて経験が無ければいきなりフレームワークはやめたほうがいい。
0224nobodyさん2010/04/23(金) 14:42:23ID:???
CakePHP 1.2.7 released
http://bakery.cakephp.org/articles/view/cakephp-1-2-7-released
0225nobodyさん2010/04/23(金) 15:32:11ID:IhQ26v2D
動的にモデルの構造やビューのフォームが切り替わるようなアプリを製作予定なんですが、
こういったアプリにはCakePHPは向かないですか?

簡単に言うと、CMSのカスタムフィールドを拡張したようなイメージで、
データの入力タイプ(フォームの種類、バリデーションのルール)を用意しておいて、
ユーザーの入力に応じて、動的に表示するフォーム・バリデーションやアプリの挙動を切り変えます。

素で作るとすると、データ用の基底クラスを作って、入力タイプごとに派生クラスを作っていく感じになると思います。

こういった独自のクラスをCakePHPのMVCに組み込むのが難しそうな感じがしているのですが、
CakePHPの場合、どうやるのがいいんでしょう?

それとも他のフレームワークを使ったほうがいいですかね?
0226nobodyさん2010/04/23(金) 15:58:17ID:???
>>225
モデルの構造が変わるっていうのはテーブルを作の?
0227nobodyさん2010/04/23(金) 16:18:29ID:???
>.226

モデルのバリデーション機能を利用しようと思っていますが、使い切りのジェネレーターのようなものなので、
今の所、フォームから入力されたデータはセッションに保存する予定です。
ですので、テーブルも作りません。

ただ、後々ユーザーの設定(フォームの組み合わせ)をDBに保存する予定があります。
が、これは動的なフォームを生成・切り替えさえできれば、設定だけ保存しておけば済むのであまり問題ないかと思ってます。

問題はデータ構造の切り替えをどうするか、です…。
例をあげると、

1) ユーザーがドロップダウンリストから「データパターン1」「データパターン2」などを1つ選んでサブミット
2) 画面遷移後、選択したタイプによって、フォームを表示。ユーザーが入力してサブミット。
 「データパターン1」の場合は「ドロップダウンリスト」を表示
 「データパターン2」の場合は「テキストフィールド」を表示
 など
3) データパターンの種類に応じたバリデーションを行う。

バリデショーンは動的に切り替えられそうなので問題ないのですが、
データ構造をもたせたクラスをどう組み込むかで、CakePHPでどうやるのがよいのか悩んでます…。
0228nobodyさん2010/04/23(金) 16:25:09ID:???
>>227の例では項目が1つですが、実際には複数の入力タイプの組み合わせになり、
各項目を操作していく感じになります。

パターン1 = テキスト + ドロップダウンリスト
パターン2 = テキスト + ラジオボタン
など

DataModel(extends AppModel)などを作り、TextDataModel(extends DataModel)などを作ればよいのかな、
(その他、DataModelの組み合わせを扱うモデルクラスなど)
と思いつつ、CakePHPではかえって複雑になってしまう気がして悩んでます。
0229nobodyさん2010/04/23(金) 16:28:36ID:???
>>228
うーん。イメージがいまいち掴めない
最終的に保存する例を教えてくれ
あと、セッションに保存したデータはどうするの?そのあと
0230nobodyさん2010/04/23(金) 16:29:11ID:???
保存されるデータの例 だった
0231nobodyさん2010/04/23(金) 16:41:57ID:???
>>229

フォームに入力したデータそのものは保存しないです。
入力されたデータを計算し、最終的に結果を画面に表示(またファイルにしてダウンロードしてもらう)だけですので。
後々データを保存する場合も、セッションをハッシュ化してそのまま保存しようと考えてます。

計算を行う際(と後々データからフォームを復元する際)に、フォームの種類を「走査」する部分をどうするか、が悩んでいる部分です。

極端な話、モデルを一つだけ作って、その中で

switch($form_type) {
case 'text':
...
case 'checkbox':
...
}

などとし、バリデーションなどだけ動的に切り替えてもいいのですが、
やはり、柔軟性を高めるためにもデータの種類ごとにクラス化したいと思ってます。

似たようなアプリがあれば説明しやすいのですが、なかなか見つからないもので、、、すみません・・・
0232nobodyさん2010/04/23(金) 16:46:50ID:???
イメージとしては、メールフォームの作成アプリが近いかもしれません。

ttp://onlineform.jp/gen/form?template=inquiry&type=1&color=black
0233nobodyさん2010/04/23(金) 16:51:23ID:???
>>231
外してるかもしれんが自分なら

モデルはひとつ
データに応じてバリデーションを切り替える
種類の識別は、種類を格納したデータを持っておいても良いし、フィールド名(擬似的なフィールド名)で識別しても良い

って感じ。
柔軟性を高めるというのが何を意味しているのかはちょっと分かんなかった
0234nobodyさん2010/04/23(金) 17:01:52ID:???
>>233

なるほど。
データの種類ごとにクラス化すれば、処理を委譲できるのでそちらのほうが楽かな、と思ったのですが、
やはり、CakePHPを使う場合はベタな書き方のほうがいいのかな。

もうちょっと色々調べてみます m__m
0235nobodyさん2010/04/23(金) 17:19:44ID:???
>>234
クラスにしてもモデルにしてもいいんだけど、
結局データの種類に応じて読み込むんだろうから、一緒かと
あと、バリデーションだけなら、外出しするほどではないんじゃないかと想像
0236nobodyさん2010/04/23(金) 17:22:17ID:???
Single Table Inheritanceというのが近そうだということがわかりました

ttp://bakery.cakephp.org/articles/view/inheritable-behavior-missing-link-of-cake-model

ただ、やはりCakePHPで想定されている使い方ではないようですね…

モデル自体を自力で実装という手もありますが、少し凝ったことをしようとすると難易度が極端にあがる、
ということだけはわかりました…。
0237nobodyさん2010/04/23(金) 17:42:54ID:???
パターンとバリデーションをセットにして記録したモデルを作っておけばいいだけじゃないすかね。
0238nobodyさん2010/04/23(金) 18:27:26ID:aAazCR87
version 1.2.3でキャッシュを使っているんですが、下のような書き方でキャッシュされません。
どこが間違っているのでしょうか?

if( !$list = Cache::read('user_list') ) {
$list = $this->Index->getUserList();
Cache::set(array('duration'=> '+5 minutes'));
Cache::write('user_list',$list);
}
キャッシュ時間は
Cache::setで設定しろといろいろなサイトには書いてあるのですが、ここを記載しているとまったくキャッシュされていません。(正確にはキャッシュはされているが、Cache::readがfalseを返す)
ここをコメントアウトするとキャッシュされています。
ご教示お願いいたします。
0239nobodyさん2010/04/24(土) 10:57:06ID:???
>>238
sageてね

Cache::readの前にもCache::setが必要だと思う
が、解決するかは分からない
0240nobodyさん2010/04/24(土) 11:13:01ID:???
CakePHP製のソースを色々見てまわってるんだけど、
OOPを活かした書き方をしているものは皆無ですね

Javaちっくな書き方をするには、
やはり、フレームワークの縛りが強すぎるのだろうか

もし、なにかよいサンプルがあれば教えてください
0241nobodyさん2010/04/24(土) 12:04:17ID:???
Javaちっくな書き方したいならsymfonyとかの方が向いてるんじゃない?
CakePHPはphp4対応だから無理がある
0242nobodyさん2010/04/24(土) 12:43:41ID:???
てか、なんでもかんでもオブジェクト指向にしなくていいじゃん。
継承しすぎて無意味に複雑になってしまうこともあるし。
自分1人でやってるならいいんだけど、多人数でやるなら分かりやすさを優先すべし。
0243nobodyさん2010/04/24(土) 13:31:06ID:???
しょうがないのかな
まぁもうしばらく使ってみます

それとは別に、
へぇ、これもCakePHP製なの?というものがあったら紹介してもらえるとうれしいかも

製作例はいろいろ探してみたけど、全て同じようなものばかりですね…
0244nobodyさん2010/04/24(土) 15:22:02ID:???
Numberのサイトとかかな?
でも>>243くんが何を持ってCakePHPっぽいと思っているか知らんから何とも言えないけど
0245nobodyさん2010/04/24(土) 15:54:11ID:???
>>244

それはどこでしょう?

色々参考になるかと思ってソース見てるんだけど、どれも似たような感じなので…
フレームワークなんで、当然といえば当然かもしれないけど、ちょっとおもしろみがないなと
0246nobodyさん2010/04/24(土) 17:20:13ID:???
オブジェクト指向的な記述にこだわる理由をしりたい
俺ならそういうときはJAVAかrubyでやる
PHPのOOPはいろいろアレすぎて面倒
0247nobodyさん2010/04/24(土) 18:08:57ID:???
サーバーの負荷を考えると cache 使った方がいいんだろうけど、
みんな最初っから cache 使ってプログラム組んでる?

サーバーに負荷がかかりまくってやべーなと思ったら cache を使うって方が効率がいいと思うけど。
0248nobodyさん2010/04/24(土) 19:52:17ID:???
つーかOOPを活かした書き方ってなんだ?
0249nobodyさん2010/04/25(日) 05:28:46ID:???
>>246

ユーザー入力に応じて柔軟に機能を切り替えたいから。拡張も楽だし。
LimuSurveyというのがCakePHPが使われてるらしいと思って見たけど、
中身はCakePHPではなかった。

ttp://www.limesurvey.org/en/demo

デモを見たら、これがCakePHPならすげえや、と思ったけど、
やはりこういうのは難しいんだろうね。というか、ソースがごちゃごちゃになりそう。
0250nobodyさん2010/04/25(日) 09:49:57ID:???
>>249
難しいこともないしソースがごちゃごちゃになることもないが、きみがCakePHPをdisってるつもりがないなら、比較スレにいった方が良い
symfonyやRuby on Rails やDjangoなど、他にも優秀なFWはいっぱいあるから
あったものを選べば良いんじゃないかな
0251nobodyさん2010/04/25(日) 15:27:11ID:???
DBを設計するとき、SQLで外部キーを設定しないでもhasOneとかで設定すれば良いのですか?
ガイドブック(1.1)にはMyISAMで作られてたし、SQL文見ても外部キーのことは書いてなかったし・・・

激しく即出な気が・・・
0252nobodyさん2010/04/25(日) 15:35:18ID:???
Announcing CakePHP 1.3.0 Stable
http://bakery.cakephp.org/articles/view/announcing-cakephp-1-3-0-stable

すたぶるキタ━━━━━━(゚∀゚)━━━━━━ !!
0253nobodyさん2010/04/25(日) 15:38:43ID:???
各バージョンの機能比較してるサイトってどこかにないですか?
わかりやすく表形式とかで。
0254nobodyさん2010/04/25(日) 16:22:54ID:???
1.3.0使ってみるかな
0255nobodyさん2010/04/25(日) 16:34:18ID:???
>>254
みるかなじゃねーよw
使ってみて感想なり批評なりしろよ。
0256nobodyさん2010/04/25(日) 18:26:09ID:???
とうとう1.3.0きたか
0257nobodyさん2010/04/25(日) 19:22:32ID:???
>>255
使ってみた
気持ちよかった
0258nobodyさん2010/04/26(月) 03:52:40ID:???
sql_dumpはエレメンツになってるんかな
0259nobodyさん2010/04/26(月) 04:34:23ID:???
インターフェースや継承を駆使したガチガチな感じなんだろうけど
AOP的なのの使い所や命名なんかにルールを持たせとけば
ゆるくても品質はそんな下がったりせんけどな。
むしろPHPは言語サポートが少なすぎて厳密にやろうとすると疲れる。
0260nobodyさん2010/04/26(月) 04:42:12ID:???
言語サポートってmb系のこと?
0261nobodyさん2010/04/26(月) 10:33:00ID:???
>>238
キーにアンダースコアを入れるとうまくいかなかった記憶が。。。
0262nobodyさん2010/04/26(月) 12:20:51ID:???
cakephpのコーディング規約について質問です

1 $writedata
2 $write_data
3 $WriteData
4 $writeData

どれがcakephp流の規約でしょうか。
0263nobodyさん2010/04/26(月) 12:27:17ID:???
>>262
変数名が使われるケースはFormHelper::input()くらいかもだけど
$write_data
だね

もっと一般的な例で言うと
$admin_users
0264nobodyさん2010/04/26(月) 16:04:48ID:???
>>263
先生、ありがとうございました!
0265nobodyさん2010/04/27(火) 09:35:18ID:???
超亀だけど、前スレの質問
--
993 nobodyさん sage 2010/03/18(木) 08:05:51
1.3になってlibsってフォルダが増えたけど、
ここには何をいれるの?
vendorsとの違いは何??
--
ttp://mark-story.com/posts/view/using-custom-route-classes-in-cakephp
で、CakeRoute クラスを上書きする記事が出てるけど、そのなかに
App::import('Lib', 'routes/SlugRoute');
ってあったから、こんな感じの使い方じゃないかな?
(vendorsはCakePHP関係ないファイルを入れるところ)
0266Beginner2010/04/27(火) 23:53:24ID:M6fZ8Sga
Routesを使用して開発をしていますが、
以下の場合、逆ルーティングが出来ません。

処理の流れとしては、一覧画面→編集画面→確認画面→(登録完了)→一覧画面
という画面遷移になります。


routes.php
Router::connect(
 '/systemFaqCategories/:faq_category_id/edit/*',
  array(
  'controller' => 'faq_categories',
  'action' => 'systemFaqCategoryEdit'
  ),
 array(
   'faq_category_id' => '[0-9]+'
  )
);
0267Beginner2010/04/27(火) 23:54:09ID:M6fZ8Sga
xxx_controller.php
//編集画面
function systemFaqCategoryEdit(){
debug('Called systemFaqCategoryEdit');

pr($this->params);

$this->editFaqCategory('systemFaqCategoryEdit',
array(
'class_information_id' => FAQ_CATEGORY_TYPE_SYSTEM,
'faq_category_id' => $this->params['faq_category_id']
)
);

}
0268Beginner2010/04/27(火) 23:55:19ID:M6fZ8Sga
//編集画面or確認画面or登録 を分岐
private function editFaqCategory($actionName, $condition) {

if ($condition['class_information_id'] == FAQ_CATEGORY_TYPE_SYSTEM) {
// 編集画面 確認ボタン
if (!empty($_POST['confirmation']) && $_POST['confirmation']) {
$this->editConfirmation();
return;
}

// 確認画面 戻るボタン
if (!empty($_POST['return']) && $_POST['return']) {
$this->editReturn();
return;
}

// 確認画面 登録ボタン
if (!empty($_POST['save']) && $_POST['save']) {
$this->editSave();
return;
}

if($sId <> '') {
$getFields = array('id', 'class_information_id', 'category_title', 'regist_id', 'update_id', 'created' ,'modified');
$this->data = $this->FaqCategory->read($getFields, $sId);
$this->render('edit');

}
}
}
0269Beginner2010/04/27(火) 23:57:37ID:M6fZ8Sga
edit.ctp
<?php
$confirmButton = array(
'controller' => 'faq_categories',
'action' => 'systemFaqCategoryEdit',
'faq_category_id' => $this->params['faq_category_id']
);



e($form->create('FaqCategory',
array('url'=>$confirmButton)));

e($form->submit('確認', array('name' => 'confirmation', 'div' => false, 'tabindex'=>1)));

?>

以下
入力inputのHTML

確認画面へ遷移した時に、ルーティングがきいていない。
URLがコントローラ名+アクション名になってしまう。

解決策をお持ちの方は教えてください。

長い文章になってしまったのはご了承ください。
0270nobodyさん2010/04/28(水) 06:20:11ID:???
sageてね
あとバージョンを書いて

んでRouter::URL()でリバースルーティングできるかを教えて
0271nobodyさん2010/04/28(水) 16:53:38ID:???
CakePHP1.2.6使用です。

モデルのsaveでNULLを入れたいときはどうしたらよいでしょうか?
OrderというモデルのpriceをNULLにしたかったので

$this->data['Order']['price'] = null;
とか
$this->data['Order']['price'] = '';
してから

$this->Order->save($this->data);
したのですが、DBには0という値が入ってしまいます。

もちろん、DB側ではNULL化というテーブル定義にしています。
0272nobodyさん2010/04/28(水) 17:02:58ID:???
最近さわりはじめてちょっと疑問に思ったことがあるので質問です。
今、適当な練習用サンプルを作っています。

利用するデータの編集をscaffoldを利用して作成しました。(Viewのみ多少修正)

しかし、削除のパスもリンクで表現されているので、(/hoge/delete/1 のように)
クローラーが巡回してきたらすべてのデータが消える気がします。

このデータは特に秘密にしたいようなものではなく、むしろ利用者で好き勝手に編集して問題がないので、セッション管理は行っていません。
セッション管理などしてない場所でscaffoldを利用するというのは想定外なのでしょうか。


現在はセッションを利用して対策する方向で修正していこうと考えていますが、
「何らかの対応方法がcakephpに用意されている」もしくは「もっと単純な対応策がある」
といった情報がありましたらぜひ教えてください。
02732722010/04/28(水) 17:04:13ID:???
Cakeのバージョンを書き忘れました。
1.3を利用していますが、他のバージョンに変更も可能です。
0274nobodyさん2010/04/28(水) 17:57:45ID:???
>>271

普通に保存できると思う。少なくとも自分はできてる。
DB側のデフォルト値をNULLにしとけば間違いないはず。

CakePHPはNULL使わないほうがよいみたい。
バリデーションもnullの扱いがおかしすぎる。
0275nobodyさん2010/04/28(水) 18:00:09ID:???
バリデーションでnullって何か不具合あったっけ?
0276nobodyさん2010/04/28(水) 18:19:37ID:???
>>274さん

返答ありがとうございます。
既存のレコードに大して実行すると、
ななんと「0000-00-00 00:00:00」という値が入ってしまいます。
これってバグ?なんですかねー。
明示的にNULLにUPDATEするためにはSQL書かないとだめなのかなぁ。
0277Beginner2010/04/28(水) 21:54:40ID:???
>>270
返事遅くなりまして申し訳ないです。

バージョンは、1.2.6です。
Router::URL()で逆ルーティングできました。

$url = Router::url(array(
'controller' => 'faq_categories',
'action' => 'systemFaqCategoryEdit',
'faq_category_id' => $this->params['faq_category_id']
)
)

e($form->create('FaqCategory',
array('url'=>$url)));

にすると、

<form id="FaqCategoryEditForm" method="post" action="/xxxx/xxxx/xxxx/xxxxx/systemFaqCategories/1/edit/">

変なURLが生成(先頭の/xxxx/xxxx/が余計)されてしまう。
0278nobodyさん2010/04/29(木) 03:12:33ID:???
>>275

nullはバリデーションのrequiredではじかれるが、allowEmptyではすり抜ける。


>>276

一部だけ更新したい場合は、事前に関係ないフィールドをunsetなどしておいたほうが安心。
特にループ中で保存する場合は思わぬデータが更新される場合がある。

コントローラーからなら、$dataに更新データが入っているとしたら、

$this->Model->create(null);
$this->Model->set($data);

if ($this->validate()) {
}
0279nobodyさん2010/04/29(木) 03:17:58ID:???
間違えて送信してしまった。
$dataに更新用のデータが入っているとしたら、下のようにするくせをつけておいたほうが安心。

// 更新する場合はキーを指定
// $data[$this->Model->alias][$this->Model->primaryKey] = 更新するレコードのID;
// $dataにフォームから受け取ったデータなどを設定。

$this->Model->create(null); // モデルのデータを初期化。 nullにしないとDBのデフォルト値が入る。
$this->Model->set($data); // モデルにデータをセット。create()しておかないと、前回のデータとマージされる。

if ($this->validate()) {
$this->Model->save($this->data, false);
}
0280nobodyさん2010/04/29(木) 03:24:05ID:???
>>if ($this->validate()) {

f ($this->Model->validate()) {

だった。上記のようにしたらnullもいけないかな?

だめならDB側のデフォルト値をnullにしておいて、

unset($data[$this->Model->alias]['created']);

$this->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->set($data);
...以下同じ...

とかしてみたらどうだろう?
0281nobodyさん2010/04/29(木) 03:27:26ID:???
何度もすまん。

$this->Model->create($data); // データがないフィールドはデフォルト値を使うようにする。
$this->Model->set($data);

だ。
create()の中でset()と同じことされるからset()はいらないかもしれない。
0282nobodyさん2010/04/29(木) 04:17:14ID:???
>>281

create()は主キーもリセットされてしまいます
ですから、この場合のset()は必須です

NULLを使わない設計ができるのであれば、それに越したことはないです
0283nobodyさん2010/04/29(木) 09:41:42ID:???
>>277
解決方法は↓いずれか

1. Router::url($url ,true) をformのurlに指定する(第2引数でフルURL)
2. (アクセスしたURLと同じ場合)$this->here
3. $form->createに渡すURL配列に 'id' => "" を含める

3.は前スレだかに書いてあったやつだが試してない。ぜひ試してもらって結果教えて欲しい
0284nobodyさん2010/04/29(木) 09:45:53ID:???
>>276
NULLはbeforeSaveでセットする
↓を参考に工夫すると良い
http://bakery.cakephp.org/articles/view/null-behavior
ttp://d.hatena.ne.jp/kusakari/20070730/1185765186
0285nobodyさん2010/04/29(木) 10:55:21ID:???
CakePHPではNULLを使わないのが正解
どうしてもNULLを使いたいなら、ここまでに出た方法のどれかで凌ぐしかない
0286nobodyさん2010/04/29(木) 11:12:30ID:???
ま、そういう造りだよね。はじめは気持ち悪かったけど慣れれば無問題
0287nobodyさん2010/04/29(木) 18:11:37ID:???
cake 1.3 DBはmysqlの5.1.41 です。(xampp最新版を利用)

ランダムに1件レコードを取り出そうとして
$this->hoge->find('first', array(order'=> 'rand()')); はうまくいったのですが、

$this->hoge->find('first', array(order'=> 'rand(100)')); のようなシードを指定しての取り出しができません。

発行されているクエリは
SELECT …… ORDER BY rand(`100`) ASC LIMIT 1
のようになっており、エスケープされてしまっているようです。
エスケープさせない方法、または、シードを固定してのランダム取り出しの方法はないでしょうか?
02882872010/04/29(木) 22:54:24ID:???
とりあえずの応急処置(バッドノウハウ的な)

$this->hoge->find('first', array(order'=> 'rand((100))'));

としてrandにカッコを二つ続けて入れることで、置換対象から外しました。
queryのプレースホルダ的な感じでやりたいので、正当なやり方があったらぜひお教え願います。
0289nobodyさん2010/04/30(金) 06:43:52ID:???
>>288

$this->hoge->fing('first', array(
'order by rand(?)' => 100
));

でできない?
conditionsではプレースホルダ使えるけど、orderはできないかな?
試してないのでわからんが
0290nobodyさん2010/04/30(金) 09:04:17ID:???
>>272-273
以前議論あったがscaffoldはそういうものっていう結論に落ち着いてた
bakeして、それを書き換えてあげるしかない
0291nobodyさん2010/04/30(金) 12:13:53ID:???
>>290
ありがとうございます。 
scaffoldはそういうものということで納得します。

bakeして書き換えも試してみようと思います。
0292nobodyさん2010/04/30(金) 15:27:09ID:???
scaffold使うより自分で書いたほうが早くないか?
0293nobodyさん2010/04/30(金) 15:39:48ID:???
やばい、わかり始めるとホントに楽しい。
0294nobodyさん2010/04/30(金) 16:13:16ID:???
でもそのうち単調な処理を書くのが嫌になってくる
0295nobodyさん2010/04/30(金) 16:19:20ID:???
分かり始めたと思ったらHABTMでわからなくなった。
cakebookのHABTMを保存の項がリンクおかしくなってるし。
0296nobodyさん2010/04/30(金) 16:46:22ID:???
>>295
タグ機能の実装解説してるブログなどを参考にするとわかりやすい
0297nobodyさん2010/04/30(金) 17:47:47ID:???
フォームにテキスト入力した時、半角英数入力に自動的になるような
viewの書き方はあるでしょうか?

validateでalphanumericをすると、事後的にチェックはできるのですが、
そもそも入力した時点で半角しか入力できないようにしたいのです。

formのtypeをpasswordにしたらそのような設定になるようですが、
textで見えている状態で強制的に半角入力にする方法を探しています。
0298nobodyさん2010/04/30(金) 18:22:22ID:???
>textで見えている状態で強制的に半角入力にする方法
ってことはアプリ側のロジックでなくて、ブラウザ側の話になるんでは?
スレ違いだけど、CSSのime-modeとかある、
0299nobodyさん2010/04/30(金) 18:33:13ID:???
>>294

なんとなくわかるわw

それに同じようなコードを書くことになるんだよな・・・
0300nobodyさん2010/04/30(金) 19:23:09ID:???
>>298

ありがとうございます!
ブラウザ側から処理するcakeの機能がないかなと調べていました。

ぐぐって調べてみます!
0301nobodyさん2010/05/01(土) 00:30:06ID:???
これだけ機能があるのにアップロードの機能は乏しいんだな・・・。
Media プラグインはなんか扱いにくそうだし。

画像のURLとアクション呼び出すURLの仕組みの違いもわからんし…
0302nobodyさん2010/05/01(土) 03:01:43ID:???
>>299
横レスだが、俺は今更ながら本家RoRに浮気してみてるところ。
Cakeに対して理解をもってから望んだら、おもしろいくらいRoRがさっくり理解出来そうだったので。

で、CakeにあったDRYじゃない感やなんかがRoR(というかRuby)で解消されるならあっちに旅立つ予定。
やっぱCakeがいいやってなったらしれっと戻って来るw
0303nobodyさん2010/05/01(土) 10:00:05ID:???
>>302
興味深いからその後どうなったか教えてほしい
俺はRoRを使えるような場に恵まれないため今のとこ利用しないが。
0304nobodyさん2010/05/01(土) 12:19:40ID:???
1.2から1.3の移行が結構大変・・・
0305nobodyさん2010/05/01(土) 12:23:27ID:???
1.2から1.3で変わったことまとめとか探し中
0306nobodyさん2010/05/01(土) 12:32:45ID:???
そんなに困るほどはかわってないきが
0307nobodyさん2010/05/01(土) 12:33:01ID:???
$sessionが使えなくて迷った
0308nobodyさん2010/05/01(土) 17:27:41ID:???
307の補足ね。

layoutのdefault.ctpとか、1.2だと
$session->flash
になってるんだけど、1.3だと
$this->Session->flash
になってる。レイアウトを移行する時は要注意。
0309nobodyさん2010/05/01(土) 17:43:56ID:???
公式にあるまとめでいいじゃん
0310nobodyさん2010/05/01(土) 18:05:55ID:???
>>308
違う、$this-> は推奨だけど無しでも動く
echoが必要になった

echo $this->Session->flush();
0311nobodyさん2010/05/01(土) 18:06:28ID:???
あと移行ガイドのリンクがテンプレ>>1-5にあるからね
0312nobodyさん2010/05/01(土) 18:13:00ID:???
>>310
本当だ。移行ガイドにも書いてあった。ありがとう。
移行ガイド、斜め読み程度で良いと思ってたけど、しっかり読もう。。。
0313nobodyさん2010/05/02(日) 20:40:40ID:???
漢もすなるフレームワークといふものをしてみむと思ってるんですけど、
CakePHPっていうのが人気なんでしょうか。
NetBeansのプラグインにSymphonyっていうのとZendっていうのしかないんですけど
それでもCakePHPがいいですかねぇ?
0314nobodyさん2010/05/02(日) 20:45:19ID:???
しらん
0315nobodyさん2010/05/03(月) 01:09:54ID:???
>>313
プラグイン?なんだそれ、喰えるのか?
俺はPHPエディタの延長のつもりでNetBeansでCake焼いてるよ。
0316nobodyさん2010/05/03(月) 01:28:15ID:???
動的言語にIDEなど不要
0317nobodyさん2010/05/03(月) 12:10:40ID:???
>>315
プラグインのことは気にせずやってみます。

>>316
IDEは便利ですよ。
使わないのは損です。
0318nobodyさん2010/05/03(月) 13:05:07ID:???
動的言語にも使えるIDEの機能は大抵テキストエディタでも実現できる
0319nobodyさん2010/05/03(月) 13:17:52ID:???
NetBeansと同等のことができるテキストエディタ教えてちょ♥
0320nobodyさん2010/05/03(月) 13:43:59ID:???
vimもIDEになりますか><
CakeOnVimを使ってるけれど、そこまで重要なファクターではないなあ
0321nobodyさん2010/05/03(月) 13:53:06ID:???
vimって使ったことないけど
自動補完とか文法チェックもできるんだね

でも見た目がアレだから、慣れないとストレスたまりそう…
0322nobodyさん2010/05/03(月) 14:15:21ID:???
MacのTextMateでCakePHPのBundleを入れてる。
Railsのスクリーンキャストでよく見かけるTextMate的な補完や操作が出来る。
昔はEclipseとかZDEとか使ってたけど、PHPに限って言えばIDE不要。
手になじむエディタ(それが人によってemacsかvimか秀丸かEmEditorかTextMateかBBEditか変わるが)
があればむしろ小回りが効いて良い。動的言語で手練れになるなら絶対コッチ。
0323nobodyさん2010/05/03(月) 22:42:04ID:???
補完だけならね

FTPやらバージョン管理やらしようと思えばIDEのほうが断然便利だな
関数の定義元も一瞬で表示されるし
0324nobodyさん2010/05/03(月) 22:58:23ID:???
ここはrsyncコマンドやscpコマンドやsvnコマンドやgitコマンドが使えないインターネッツですね
0325nobodyさん2010/05/03(月) 23:16:54ID:???
IDEのほうが断然便利だな
0326nobodyさん2010/05/04(火) 01:18:42ID:???
じゃぁちょっと使って見るかな
0327nobodyさん2010/05/04(火) 01:30:32ID:???
IDEは便利。
一発で整形が出来るのが便利。
エディタでも出来るかもしれんがw

Xdebugとか要求してきてメンドイが
0328nobodyさん2010/05/04(火) 18:50:23ID:???

1.3使っているのですが、
Shellから
静的HTML吐きだしたいのです。
ctpとViewのrender使ってレンダリング結果を保存しようとしたのですが、
ViewTaskも使えず、
Controllerをnewしてrenderしてもエラーがでてしまいます。

どなたか対処法ご存じないでしょうか?
上記方法はぐぐってでてきたので試したのですがダメでした……。
0329nobodyさん2010/05/04(火) 19:31:04ID:???
>>328
html_cacheというafterRenderでhtmlファイルを生成するplugin を使ったほうが早いかも
shellじゃないとだめなの?その場合は必要なファイルをimportしてnewしてって面倒くさいと思うが、今どう書いているのか教えれ
0330nobodyさん2010/05/04(火) 19:46:53ID:???
>>329
おお、そんなプラグインが……。
調べてみます。ありがとうございます。
shellでやりたいのは定期実行で、
古い記事を静的ファイルに落とす処理なのです。
URL叩くのでも良いのですが、その他の処理はTaskになっているので出来れば一度にやりたいと……。
以下、全てShell内部でやってます。

1. 既存コントローラ new
// DebugKit がどうとかでてエラー
App::import('Controller', array('Posts'));
...
$controller = new PostsController();
$controller->components = array('Auth');
$controller->constructClasses();
$posts = $controller->__createStaticHtml();

2. 只のコントローラ new
// エラー
App::import('Core', 'Controller');
...
$this->controller = new Controller();
$content = $this->controller->render('archive' , '' , $filepath );

3. ViewTask
// エラーorz...
var $tasks = array('View');
...
$this->View->getContent('archive', $params);
0331nobodyさん2010/05/05(水) 22:23:38ID:???
Paginatorを使ってみたんだがURLが汚すぎて使い物にならないな…
せめてGET方式に簡単に切り替えられないもんかね?

paginatorヘルパーのオプションでクエリを指定すればそれっぽくはなるんだが、
ソート(order)指定していると、ページリンクでコロン付きのリンクが生成さえれてしまう…
0332nobodyさん2010/05/05(水) 22:49:52ID:???
pagitorのオプションで 'url' => array('order' => null) でいけたわ
ほんと、モデル名がURLに出る仕様はどうかと思うわ

自前でクエリのパラメータ名とModel::paginate()のオプションを相互変換する処理書いたが、
もうちょいうまいやり方はないものなのかねえ
0333nobodyさん2010/05/06(木) 12:38:02ID:???
ルータ使うのは?
0334nobodyさん2010/05/06(木) 21:56:38ID:???
>>333

ルータ使っても名前付きのパラメータついちゃうねえ
page:2 とか

ルータで細かく指定すれば逆ルーティングしてくれるの?
0335nobodyさん2010/05/06(木) 22:07:24ID:???
ちなみに、ルーティングしてない状態だと

/sort:Table.created/direction:desc

とかなってる。
ルーティングだけで

/date/desc

みたいにできるもんなの?
できなくて自前で書いちゃったんだけど、細かく指定してできるんならそっち使うわ
0336nobodyさん2010/05/06(木) 22:37:56ID:???
ちょい試したら

Router::connect('/search/:page',
array('controller' => 'Product', 'action' => 'search')
);

とか書いたらいけたわ…
ソートのほうは、表示名変えるには一個づつ全部かかないと駄目そうだけど

(逆)ルーティングもだいぶ賢くなったんだなあ
0337nobodyさん2010/05/06(木) 22:51:27ID:???
ソートもこれでいけた

Router::connect('/product/search/date/:direction/:page',
array('controller' => 'Product', 'action' => 'search', 'sort' => 'Product.created')
);

ソートキー分だけ全部書かないとだめそうだが、いけた
第3引数で数字のチェックとかすれば、これでいけそう

あなどってたわ・・・w
0338nobodyさん2010/05/06(木) 23:20:16ID:???
virtualFields使ってる場合に問題があるみたい

Router::connect('/product/search/price/:direction/:page',
array('controller' => 'Products', 'action' => 'search', 'sort' => 'Product.price')
);

こんな感じのルーティングで、Product.price がvirtualFieldsの場合、
ソートの方は $paginator->sort(...) で逆ルーティングしてくれるが、
$paginator->next(...) なんかは逆ルーティングできない

Router::connect('/product/search/price/:direction/:page',
array('controller' => 'Products', 'action' => 'search', 'sort' => 'price')
);

とか書いたら $paginator->next(...) のほうはうまくいったが、今度はソートのほうが逆ルーティングできない

両方書いてみたらぱっと見はうまくいくけど、ソートの昇降が切り替えられなくなった

バグだよね
0339nobodyさん2010/05/06(木) 23:25:18ID:???
ルーティング関係なかったわ
virtualFieldsのsort()自体にバグがあるみたい
昇降切り替えができない
0340Beginner2010/05/07(金) 00:00:52ID:???
>>283
レス遅くなりました。

1,2の方法ではうまく行きました。
3の方法ではうまく動かなかったです。

絶対URLになってしまったのですが、問題ないのでしょうか?
<form id="FaqCategoryEditForm" method="post" action="http://xxxxx/systemFaqCategories/1/edit/">

今までは、相対URLでしたけど・・・
0341nobodyさん2010/05/07(金) 02:13:33ID:???
>>339

virtualFieldsだと、Controller::paginates()で$paging['options']['order']のモデル名が消えてしまう模様
そのせいかわからないがPaginator::sort()が切り替えられない(逆ルーティングはできる)

Paginator::prev()で逆ルーティングできないのもそのせいかもしれない

原因探してもよくわからないから、paginatorヘルパーのオプション['url']['sort']を明示的に指定するようにしたよ…
0342nobodyさん2010/05/08(土) 01:28:35ID:???
hasManyのモデルのバリデーションってどうすればいいんでしょ?

$this->A->B->create($this->data);
if ($this->A->B->validates()) {....


って感じでバリデーションを調べようとしていて
hasMany関連だから$this->date['B'][0]['field']の形式なんだけど
$this->date['B']{'field']っていうフォーマットってじゃなきゃ、バリデートしてくれないみたい

英語、日本語でググってみたけど、なかなか解決できない…
誰か知ってたら教えてくだせえ
0343nobodyさん2010/05/08(土) 14:35:38ID:???
model内でSessionコンポーネントを使う方法はあるでしょうか?

下記のように書いてみましたが、Session->writeでエラーが出てしまいました。
コントローラに書いた場合、 authByHashは上手く機能するのですが。。

class User extends AppModel {

public $components = array("Session");

function authByHash($id = null){

$conditions = array("hash" => $id);
$user = $this->find($conditions);
$this->Session->write('Auth',$user);
if(!empty($user) ){
return true;
} else {
return false;
}
}

0344nobodyさん2010/05/08(土) 18:06:51ID:???
そもそもmodel内でSessionを使わなければいけないという設計が変だと思う
0345nobodyさん2010/05/08(土) 19:58:36ID:???
>>342
saveAll で、validation => false or only
でいけると思う
0346nobodyさん2010/05/08(土) 19:58:55ID:???
>>345
first or only だった
0347nobodyさん2010/05/08(土) 20:13:26ID:???
Virtual fieldsは、1.3以降の機能?
0348nobodyさん2010/05/08(土) 20:42:38ID:???
>>347
そう
0349nobodyさん2010/05/09(日) 03:09:31ID:???
Auth ログイン情報をブラウザ閉じても保存したいのですが、
オススメの方法はあるでしょうか?

コンポーネントとか使わずに、クッキー処理が正解なのかな。
0350nobodyさん2010/05/09(日) 11:14:42ID:???
cookieコンポーネント。
0351nobodyさん2010/05/09(日) 11:16:11ID:???
thx!
0352nobodyさん2010/05/09(日) 12:38:20ID:???
ググればたくさん出てくるよ
公式のフォーラムにもあったはず
0353nobodyさん2010/05/09(日) 20:37:17ID:???
1.2で開発してるんだが、コンソールで管理するためにシェル書いたんだけど、
Class 'Model' not found in /path/to/app_model.php on line 39
ってなって動かないんだけどこれってバグ?しかも、毎回なるってわけでもなく、たまには動くんだよな。謎。
03543472010/05/10(月) 02:18:33ID:???
>>348
サンクス。そっかー、1.2じゃ使えないのか。。。
面白そうな機能なので、1.3に上げたら使ってみます。

http://d.hatena.ne.jp/hiromi2424/20100204/1265274976
0355nobodyさん2010/05/10(月) 11:32:48ID:???
>>354
AttributeBehavior
http://bakery.cakephp.org/articles/view/attributebehavior-dry-and-powerful

っつうのもある
0356nobodyさん2010/05/10(月) 13:03:35ID:???
cakephp便る杉ワロタ
無知の俺でもデータベース使いまくリングw
0357nobodyさん2010/05/10(月) 17:40:26ID:???
>>345
いけた!ありがとう!たすかったw



てかsaveメソッドなのにsaveしないならvalidatesに引数渡して判断さしたほうが
わかりやすいような気がするぜこれw
0358nobodyさん2010/05/11(火) 15:29:46ID:7YcJ1BHK
皆さんに2点質問です。
cakephp1.3使ってます。
sanitizeについてなんですけど、
mysqlにtext,textareaでデータを格納するとき、

■Sanitize::clean($this->data)か
 Sanitize::html($this->data['User']['・・・'];
どっちつかってますか?

■sanitizeしたデータを取り出すとき、(例えばaddしたデータをeditするときなど)
おおおおおお\n&lt;a href=ageorgja&gt;あぞあおb&lt;/a&gt;\n&lt;?pjfeowjfo&gt;fewjfoewjoewjfoewdj&lt;?&gt;\n&lt;?php fjaeof

こんな風になってしまうんですけど、いい回避方法教えて下さい。
0359nobodyさん2010/05/11(火) 22:45:09ID:???
>>358
>こんな風になってしまうんですけど、いい回避方法教えて下さい。

Sanitizeを使わない
0360nobodyさん2010/05/12(水) 00:13:03ID:???
CakePHP1.2とmysql5.1を使っています。

みなさんに質問なんですが、編集、削除時の楽観排他はどうやって実現されてますか?

1.データ取得時に、更新日時を持っておく。
2.編集(削除)実行前に、対象データを検索して、更新日時を取得
3. 1と2の更新日時を比較
4. 同じなら編集(削除)実行、違ったら何もしない。

こんな感じでしょうか?

CakePHPでSELECT FOR UPDATEってどうやって実現するのでしょうか?
普通にSQL文を投げる?なんとなくCakeぽっくないですが・・・
0361nobodyさん2010/05/12(水) 09:59:39ID:???
>>360
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1500&forum=6&post_id=3400
やったことないけど、公式フォーラムにあったよ
見てないけどbehavior作った人もいるみたい
03623582010/05/12(水) 13:42:37ID:ISVrEn/n
スレ違いかもですが、サイト運営したことないんですけど、やっぱ
sanitizeしないと危険ですよね?
皆さんどーしてはるんですか?
0363nobodyさん2010/05/12(水) 14:33:07ID:???
>>362
DBには素のデータを保存し書き出すときにエスケープが基本やで

あとsageてな
0364nobodyさん2010/05/12(水) 14:41:27ID:???
>>362
サニタイズは必要だよ。
359の方法は試したのか?CakePHPのソースあるんだから、人に頼る前に自分でコード追ったり、
どんなSQL文が発行しているのか、確認した方がいいんじゃないか?


ここ、質問スレ?
0365nobodyさん2010/05/12(水) 14:46:52ID:???
×SQL文が
○SQL文を
0366nobodyさん2010/05/12(水) 15:42:41ID:???
勉強会1時間で埋まったね。
0367nobodyさん2010/05/12(水) 15:47:50ID:???
実質30分足らずだった。いったん埋まった後、重複申込みとか消して、その分が埋まったのがその30分後くらい?
あしたまたあるってのは運営GJだと思う
0368sage2010/05/13(木) 22:02:44ID:DXEWzNfV
358です。
>>363
ありがとうございます。
2ちゃん素人なもんでsageは初めて知りました。

>>364
ありがとうございます。
あと、最初にスレ違いかもって断ったし、近くに質問する人いないんで、
勘弁してくださいよ。
0369nobodyさん2010/05/13(木) 22:05:53ID:???
勉強会、今日はペース悪いな
1時間で半分も埋まってない
0370nobodyさん2010/05/13(木) 22:10:10ID:???
質問する人いないので勘弁しろとは傲慢すぎクソワロタ

http://kmaebashi.com/zakki/zakki0042.html
読んでないけど。

つかここCakeのスレだったね
0371nobodyさん2010/05/14(金) 08:33:55ID:???
サニタイズはやっちゃだめだよ
0372sage2010/05/14(金) 13:28:20ID:UVik1blM
>>371
その心は何ですか?
たしかにcleanすると、<記号とか全部変換されちゃってちゃんと
取り出せないから使えないかなとは思ってますが。
0373nobodyさん2010/05/14(金) 13:58:58ID:???
サニタイズってもSQLインジェクション対策の部分とXSS対策の部分があるから
なんでもかんでもエスケープだのタグを無効化だのしとけばいいってわけじゃない。
データをDBに出し入れする時とビューで表示させる時で分けて考えれば良いよ。
0374nobodyさん2010/05/14(金) 16:21:59ID:???
>>372
sageはメール欄にな
0375nobodyさん2010/05/14(金) 16:28:01ID:???
つか1.3はどんな機能が拡張されていくんだろうかな…

出て早々だが、バージョンアップが楽しみだ
0376nobodyさん2010/05/14(金) 18:08:01ID:???
1.3の中では正直機能追加してほしくない・・・
0377nobodyさん2010/05/15(土) 07:54:07ID:???
>>375
え?
0378nobodyさん2010/05/16(日) 05:54:58ID:???
下記サイトの記述に従って、PaginateをModel中で上書きしたところ、Viewで、
”Undefined variable: paginator”と出るようになってしまいました。

どうすれば、View中で$paginatorを取得する事ができるでしょうか。

http://book.cakephp.org/ja/compare/249/Custom-Query-Pagination


model/group.php:
 class Group extends AppModel
 {
    function paginate($conditions=null, $fields=NULL, $order=NULL, $limit=20, $page = 1, $recursive = null, $extra = array()) {
       $conditions = array("Group.id" => "1");
       
       return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive'));
    }   

    (以下略)
 }


views/group/index.ctp:
 <?php echo $paginator->prev('< 戻る', array('class'=>'effectived'), null, array('class'=>'disabled')); ?>
 (以下略)


エラーメッセージ: ”Undefined variable: paginator [APP/views/group/index.ctp, line **”
0379nobodyさん2010/05/16(日) 07:57:11ID:???
コントローラーでPagenatorHelper読み込んでないとかじゃないよな
0380nobodyさん2010/05/16(日) 11:43:49ID:???
あと paginate メソッドもいろいろと間違っていると思う
が、modelの中で上書きは関係ないから、まずは>>379あたりからひとつひとつチェックしていくべし
0381nobodyさん2010/05/17(月) 23:13:07ID:???
ひとつのビューに複数ボタンを設置して、押されたボタンによって処理を分けたいのですが、
押されたボタンの名前が入る変数はdataで良いのでしょうか?

<input type="submit" value="登録" name="toroku" />
を押した場合、どの変数にどの様に格納されるのか教えてください。
0382nobodyさん2010/05/18(火) 01:58:05ID:???
>>381
var_dump()なり、pr()なり、debug()なりする。
そんなもん、いちいち聞くな。

自分で実行したもんは、血となり肉と成る。
0383nobodyさん2010/05/20(木) 12:42:48ID:???
http://pc11.2ch.net/test/read.cgi/php/1240977569/
381の様なのが多いからだよな
0384nobodyさん2010/05/21(金) 09:47:01ID:???
突然、あるコントローラのアクションが2回呼ばれるようになっちゃった
今は問題の切り分けのために、アクションの中身はfile_get_contentsで文字列書き込んでるだけのシンプルな形。
なぜかわかる人、教えてください・・・
0385nobodyさん2010/05/21(金) 10:01:20ID:???
>>384
バージョンは?
0386nobodyさん2010/05/21(金) 10:12:08ID:???
>>384
2回呼ばれるというのは何をもって言ってるの?
アクションの先頭でdebug()おいて二回表示されるとか?
たんにfile_get_contents()が二回されてるだけ?
0387nobodyさん2010/05/21(金) 10:32:14ID:2DyunNSv
>>385
1.2.6です

>>386
$text = file_get_contents('test.txt');
$text .= 'a';
file_put_contents('test.txt', $text);

アクションの中身はこうなってて、1回叩くだけでtest.txtの中身が「aa」になっちゃいます・・・
0388nobodyさん2010/05/21(金) 10:52:26ID:???
>>387
debug( file_get_contents('test.txt') );
file_put_contents('test.txt', date() ,FILE_APPEND);

で、問題を切り分けてみたら?
03893872010/05/21(金) 12:42:28ID:2DyunNSv
>>388
今出先なので後で試してみます
0390nobodyさん2010/05/21(金) 19:30:09ID:???
必要なのはまずdebuggerの環境だとおもうけど。
0391nobodyさん2010/05/21(金) 22:22:23ID:dGPdEg+u
LLのフレームワークは使用するのに
どうしても多量のバッドノウハウが必要になるからな・・・
0392nobodyさん2010/05/22(土) 00:43:25ID:???
バッドノウハウが必要ないFWって?
0393nobodyさん2010/05/22(土) 02:23:34ID:???
>392
皆が理想としてるFWじゃ?
0394nobodyさん2010/05/22(土) 10:58:36ID:???
あぁ、宗教の話か。
0395nobodyさん2010/05/22(土) 12:01:59ID:???
>>387
test.txtに"a"が入ってるなら

$text .= 'a';が .= になってるから結果が"aa"になるに決まってんじゃん
0396nobodyさん2010/05/22(土) 14:31:49ID:???
ひねくれ過ぎワロタw

バッドノウハウの総量の話だろw
0397nobodyさん2010/05/22(土) 15:08:38ID:???
cakeで普通に書いててバッドノウハウが必要なことなんかあるっけ?
0398nobodyさん2010/05/22(土) 15:38:56ID:???
うん、あり過ぎるね
しかも基本的な所にわんさと
慣れると不感症になるけどね
俺もそうだけどさ
0399nobodyさん2010/05/22(土) 16:13:48ID:???
>>398
例えば?
0400nobodyさん2010/05/22(土) 16:52:58ID:???
多過ぎていちいち列挙すんのめんどくせ
誰でも分かるほんの一例としては
バリデーション周りやらAuth周りやら
挿入周りにすらあるし
挙げ始めたらキリないって
0401nobodyさん2010/05/22(土) 18:45:35ID:???
>>400
例えばってんだから、ひとつ例を挙げればいいだろ。
それとも挙げられないのに、さもあるように言うnoobさんですか。
0402nobodyさん2010/05/22(土) 19:07:46ID:???
挙げた一例から
何がバッドノウハウに該当するか
自分で判断出来ないだけでしょw
0403nobodyさん2010/05/22(土) 19:11:39ID:???
まぁ、例えば?って聞いてる人に対する答えにはなってないわな
0404nobodyさん2010/05/22(土) 19:21:24ID:???
>誰でも分かるほんの一例としては
>バリデーション周りやらAuth周りやら
>挿入周りにすらあるし

これでピンとこない分からないレベルの奴に
いちいち手取り足取り指導なんてしませんよw
0405nobodyさん2010/05/22(土) 19:31:42ID:???
0406nobodyさん2010/05/22(土) 19:39:37ID:hO+yRnh4
bakeのおまじないとかあったしなw
0407nobodyさん2010/05/22(土) 20:16:03ID:???
>>404
手取り足取りとかピンと来る、という表現がnoobなんだよ。
0408nobodyさん2010/05/23(日) 00:17:55ID:???
あたしのためにケンカはやめて!
0409nobodyさん2010/05/23(日) 01:11:22ID:???
意味ないこと書きこむ暇があったらバッドノウハウの一例でも書きこめよ
0410nobodyさん2010/05/23(日) 01:21:00ID:???
必要なバッドノウハウって意味分からないんだが。
0411nobodyさん2010/05/23(日) 01:42:35ID:???
security componentとかかな。
0412nobodyさん2010/05/23(日) 02:39:02ID:???
うるせぇな。
空気嫁よ。
多すぎるって言ってるだろ。
0413nobodyさん2010/05/23(日) 09:03:16ID:???
ま、どんな言語、FWにもバッドノウハウはつきものだと思うよw
0414nobodyさん2010/05/23(日) 18:07:02ID:???
Cakeは実装部ソース見ないといけないとかごくごく普通だしね
阿藤快もなんだかなあって言ってたよw
0415nobodyさん2010/05/23(日) 20:33:53ID:???
バッドノウハウの定義って何だっけ?
ORマッパーのGROUP BYとか、そのへんも含まれる?
0416nobodyさん2010/05/24(月) 00:37:05ID:???
つーか、オフコン、クラサバVB、java 黎明期、struts+spring全盛、RoR & Cakeと
渡り歩いてきた爺さんとしてはCakeのソースが一番汚なくて、パッと見判別がつかねぇな。

クラサバはなんちゃってPGが溢れた時期でソース自体が汚くて見る気が起きなかったし、
javaも似たようなもんだが、Cakeはなんつーか、ほんとにこんな方向に発展したかったん
だろうか、と素朴に思うよ。

まぁspringのxml見たいに、書いてるxmlが本当に意味があるんだろうか、という異次元の
悩みよりはマシだが、ちょっとそのproject離れるとCakeは一から追わんとワカランな。
0417nobodyさん2010/05/24(月) 00:39:55ID:???
つか単にPHPが一番汚く書けるってだけじゃねえのオッサン
0418nobodyさん2010/05/24(月) 00:40:28ID:???
汚いってのはお前らのコードが汚いってわけじゃなくて、コードパターンが
なんつーかとにかく汚い、arrayと->の洪水ってか、xml hellに似てるよ。
0419nobodyさん2010/05/24(月) 00:44:43ID:???
おっさんからみてRoRはどう?

配列地獄を使わないPHP FWとかはどう?(これでも->からは逃れられないか)
そうなってくるとCakeっつうよりPHPの言語仕様の問題になってくるな
0420nobodyさん2010/05/24(月) 01:03:14ID:???
Quercusとかあるし
フレームワークもJavaVMで書く方向になればいいのに。
PHP以外の好きな言語で書けるし、
ライブラリやエンタープライズ向けの環境も自動的についてくる。
0421nobodyさん2010/05/25(火) 08:40:56ID:???
言語が使えるってだけで、その言語のライブラリが全て動作するかっていったら
結構動かないからな。

独特の挙動も多いし厄介。

0422nobodyさん2010/05/25(火) 18:49:36ID:kFSX6Hgc
formヘルパーで
メールアドレス[ ] (name属性はemail)
メールアドレス(確認)[   ](name属性はemail_confirm)
みたいなのを作ったんですが
email_confirmのバリデーションで
'rule' => array('equalTo', $email )としたいのですが可能ですか?
マニュアル見ても本見ても変数使ってるところがなくて悩んでます。
バージョンは1.3です。

0423nobodyさん2010/05/25(火) 19:18:13ID:???
>>422
sageてー

その位置に変数使えないでしょ?
独自バリデーションを作ればOK

便利系validationをみつくろってプラグイン化してくれている人がいるから、探すもよしだな
0424nobodyさん2010/05/25(火) 19:21:50ID:???
お、すいません。
了解です!ありがとうございます。
0425nobodyさん2010/05/25(火) 19:30:13ID:???
結局コントローラでバリデーションの定義しました。
汚いですが…
0426nobodyさん2010/05/25(火) 20:51:59ID:???
今からCakePHP始めるなら1.3がいいですかね?
0427nobodyさん2010/05/25(火) 20:57:46ID:???
なんで?
0428nobodyさん2010/05/25(火) 21:03:08ID:???
便利な機能がありそうだからって感じじゃないかな
でも不具合も多そうだし、これから触るのであれば安定版使うほうがいいだろJK
04294262010/05/25(火) 21:41:26ID:???
1.3.0も安定版って書いてあったんで^^
0430nobodyさん2010/05/25(火) 21:49:24ID:???
マジで
0431nobodyさん2010/05/25(火) 22:19:42ID:???
俺は語尾が好きな数字のモノを使ってるよ
0432nobodyさん2010/05/25(火) 22:33:17ID:???
す スイーツきた!
0433nobodyさん2010/05/26(水) 15:07:53ID:3pytNVWj
Var.1.3で、"app/plugins/プラグイン名/views/layouts"内の、
レイアウト使うにはどうすれば良いですか?
Ver.1.2なら、"app/views/layouts"内のレイアウトより優先的に使えてたのですが。
0434nobodyさん2010/05/26(水) 15:51:21ID:???
>>433
1.2と同じようにプラグインの中のレイアウトを読んでくれてるけど、うまくいかない?
04354332010/05/26(水) 16:02:21ID:???
>>434
すいません勘違いしておりました。
ありがとうございました。
0436nobodyさん2010/05/27(木) 03:36:15ID:cH14ywiE
Cake初心者でbake使ったことないけど、
Bakeって使えるの??
0437nobodyさん2010/05/27(木) 03:37:34ID:cH14ywiE
あ、あとCake使えるようになったら、他のPHPフレームワークもスグ理解できる
ようになるかな?
0438nobodyさん2010/05/27(木) 13:07:13ID:???
あなた次第だね
0439nobodyさん2010/05/27(木) 18:36:08ID:???
Cakeの勉強会楽しそうだなぁ
0440nobodyさん2010/05/28(金) 00:34:38ID:???
Cakeの.htaccess設定って本買って勉強するような技術?
公開鯖に上げられないんだけど。
0441nobodyさん2010/05/28(金) 01:16:27ID:???
>>440
いいえ。
0442nobodyさん2010/05/28(金) 01:36:12ID:???
勉強会行く人いる?
このスレの住人と会えたらいいなーと思ってるけど。
0443nobodyさん2010/05/28(金) 08:59:16ID:???
>>442
行くよ
0444nobodyさん2010/05/28(金) 11:24:16ID:???
いくら?
0445nobodyさん2010/05/28(金) 13:17:03ID:???
cssファイル内で画像を設定するとき、例えば

background-image: url("/(アプリ名)/img/aaa.png");

などとしますが、上記のアプリ名の部分が変更された場合に自動で追従するには
どうすればいいものでしょうか?
04464452010/05/28(金) 13:43:33ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1776&forum=7

こんな感じのが一般ですかね??
0447nobodyさん2010/05/28(金) 14:15:22ID:???
>>445
1.2ならvendors、1.3ならpluginsに入れてしまう。という手もあると思う。
0448nobodyさん2010/05/28(金) 14:18:04ID:???
app::importしてviewに表示ってことですか?
0449nobodyさん2010/05/28(金) 17:04:27ID:???
>>445
background-image: url("/app/webroot/img/aaa.png");

でいいじゃないの
0450nobodyさん2010/05/28(金) 22:05:07ID:???
オープンになっているプラグインの一覧ってどっかない?
0451nobodyさん2010/05/29(土) 14:01:50ID:???
>>449
CakePHPってこんなことまでできるんですか??
0452nobodyさん2010/05/29(土) 14:14:23ID:???
> 445
俺だったらシンボリックリンク使うかな。
0453nobodyさん2010/05/29(土) 14:34:13ID:???
>>542 ftpのみの環境だと無理だろ
0454nobodyさん2010/05/29(土) 18:00:38ID:???
>>542に期待
0455nobodyさん2010/05/30(日) 08:02:11ID:???
>>542 モデルに書いた方が後でごちゃごちゃしないのでオヌヌメ
0456nobodyさん2010/05/30(日) 15:07:32ID:???
質問です。
CAKEの本でなにか初めての人向けのお勧めの本ってありますか?
リファレンス的な本はCakePHP ポケットリファレンス買おうと思ってるのですが
探してみたんですがあまり評価のよろしくないものが多いので・・
おねがいーします。
0457nobodyさん2010/05/30(日) 15:27:57ID:???
>>456
CakePHP1.2ガイドブック
http://www.amazon.co.jp/dp/4839932468/
0458nobodyさん2010/05/30(日) 16:30:06ID:???
>>457

この本ってアマゾンの評価みてもわかりにくそうな印象が・・
大丈夫でしたか?
またサンプルもCDも付属なし、ダウンロードもできないっぽいですが・・
0459nobodyさん2010/05/30(日) 16:31:49ID:???
CakePHPは1.3がでてしまったからなー。
どの本も時代遅れさー。
0460nobodyさん2010/05/30(日) 16:33:16ID:???
俺はいろいろ本を買ったが、一番役に立ったのは「CakePHP ポケットリファレンス」だった
0461nobodyさん2010/05/30(日) 16:44:35ID:???
>>459
>>460

そうなんですよねー、1.3って1.2と比べて機能とかけっこう違いあります?

CakePHP ポケットリファレンスはamaの評価もよいしリファレンス本は必要なんで
買う予定なんですけど、他の本ってどれもイマイチ評価悪いんですよねー。。
457さんの本は値段も微妙に高いしちょっと買うのに躊躇が・・。
0462nobodyさん2010/05/30(日) 18:34:09ID:???
>>458
尼のコメには
>ソースコードは
http://github.com/yandod/cakephp-guidebook
http://cakephp.cba-japan.com/
>からどうぞ。
って書いてあるけど
0463nobodyさん2010/05/30(日) 20:53:48ID:???
ガイドブックは読みにくいけど内容は一番まともだと思う
さわりの部分をひととおりさらうにはいい
でもそんな目的のためにあの値段は高過ぎる・・・
半分の薄さで簡潔に書いてくれて半額のほうがいい本になって売れると思うけどなぁ
0464nobodyさん2010/05/30(日) 21:50:27ID:???
http://bakery.cakephp.org/articles/view/cakephp-1-3-1-now-with-delicious-sprinkles
0465nobodyさん2010/05/30(日) 22:49:56ID:???
ガイドブックはざっくり目を通すには悪い本ではないと思う
ただ誤植が多くて、サンプルがどのコードに対応するのか分かりにくい
手を動かして練習するには不向きな気がする
0466nobodyさん2010/05/30(日) 22:55:03ID:aCIlDOev
ショッピングカートの
注文部分みたいなのどうやって作ればいい?
カートの中身→住所入力→支払い方法入力→確認画面→完了みたいなの。

希望としては、URL直接入力でいきなり途中のページ、たとえば支払い方法入力
ページにいけたりしてほしくなく、決めたとおりの順序でしか
表示されないようにしたい。
だからURLは全部同じになるのかな?

でも可能なら、戻るや進むは理想どおりに動いてほしい。
これはURL同じじゃ実現は難しいのかな?

どうするのが一番いいんだろう。
別にCakePHP以外の話でもいいんだけど、
こういうところ、みんなどうやって作っているのか気になる
0467nobodyさん2010/05/30(日) 22:59:54ID:???
>>466
cakeに関係なく普通はセッション使うのでは。
0468nobodyさん2010/05/30(日) 23:03:25ID:???
フラグを立てればいいかも
0469nobodyさん2010/05/30(日) 23:08:21ID:???
>>466
セッションに前の画面から来たという証を入れといて
次の画面で照合する。
これをやらないとCSRF脆弱性に繋がるよ。
0470nobodyさん2010/05/30(日) 23:12:42ID:???
session_regenerate_id(true)とかは?
0471nobodyさん2010/05/30(日) 23:14:58ID:???
CAKE本についてありがとうございました。
参考にしてみます。

近所の図書館にガイドブック1.2あったんでとりあえずそれでしのいで
1.3の本でてから買うことにしました。
0472nobodyさん2010/05/31(月) 00:07:26ID:???
>>469
そういうこまごまな雑用を
やらなくてすむのがフレームワークじゃないんですか?
0473nobodyさん2010/05/31(月) 02:22:36ID:UmKeQ4JH
ヘルパーの中読んでるんだが
なんか実装するつもりだったんだろうけど動作してない機能とか変な引数突っ込んだらバグるメソッドとかぽろぽろ見つかるな

あとオーバーロードを無理矢理実装するのはやめてくれ
HtmlHelper::tableCellsとか酷すぎ
0474nobodyさん2010/05/31(月) 07:41:00ID:???
>>472
security component使うのがcake流では?
0475nobodyさん2010/05/31(月) 11:48:32ID:???
cakephpって有名な企業とかで使われてる?
0476nobodyさん2010/05/31(月) 12:53:33ID:???
Firefoxアドオンサイト
0477nobodyさん2010/05/31(月) 16:46:23ID:SYZ/fufa
hogehoge.comへアクセスした時
www.hogehoge.comへ変更するのは.htaccessを弄るしか方法ないでしょうか?
0478nobodyさん2010/05/31(月) 18:42:48ID:???
もしCakeでやるのだったら、
AppController の beforeFilter で、ホストを取得して、それを元にリダイレクトかければいいんじゃない。

上記方法でやるよりも、.htaccessでやるのが全然いいと思うが。
0479nobodyさん2010/05/31(月) 18:50:29ID:???
1.3.0さわってみた記念
ところでsqlite3を使いたくてgithubのDBOを入れて使えるようにしたのだが
bakeでmodelを作成できないのは仕様?
0480nobodyさん2010/06/01(火) 11:47:04ID:???
form->radioで、未選択時の値を選択なしにする方法はありますか?

$options に値「0」のデータが含まれていると、未選択時にこの値が選択されてしまうのです。
form->selectの第3引数に$selected = nullを指定したときと同様の動作を望んでいるのですが。
0481nobodyさん2010/06/01(火) 17:56:45ID:???
1.3使ってます。
Formヘルパーで、checkboxを以下のように出力したとき、divが消せないんですけど
これってどうやれば良いんでしょうか?
<?php
echo $form->input(
'search3',
array(
'type'=>'select',
'multiple'=>'checkbox',
'div'=>false,
'label'=>false,
'options'=>$lists
)
);
?>
0482nobodyさん2010/06/03(木) 11:12:40ID:mt7KSN2e
つい先ごろからCakePHPを利用したアプリ作ってます。ver1.3です。
質問ですが、よくある検索条件&一覧の画面で、paginate使う場合にソートや
ページング後に検索条件を保存する方法はフレームワークで用意されてない
のでしょうか。
ない場合、定石的にはどうするのでしょうか。sessionに入れるというのは一つ
思いつきますが、できればやりたくありません。

よろしくお願いいたします。
0483nobodyさん2010/06/03(木) 11:33:09ID:???
>>482
ない
あと同じ質問以前にあったから検索すること
0484nobodyさん2010/06/03(木) 14:10:48ID:???
>>482
Search Plugin 使うとよい
0485nobodyさん2010/06/04(金) 03:35:38ID:NZTGzHeO
MediaPluginって、モデルごとにサムネイルサイズ指定できない?
Configure::write()での指定をモデルごとに入れてやろうかとも思ったけど、
viewで表示する際ソースのheight/widthに数値入るから不具合起こりそう
なんかいい解決方法ないですか?

複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな
04864822010/06/04(金) 06:54:54ID:???
ありがとうございます。プラグイン調べて見たいと思います。
0487nobodyさん2010/06/04(金) 10:09:17ID:???
cakeにプラグインがあるなんて知らなかった。
情報thx!!

0488nobodyさん2010/06/04(金) 14:09:11ID:???
>>485
>複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな

Attachement モデルで group とかで指定できるでしょ。
これができるから、mediapluginってつえーんだよね。
0489nobodyさん2010/06/04(金) 15:29:41ID:???
>>488
それはそうなんだけど
サイズ指定ね。
モデルによって必要なサムネイルサイズが違うって普通にあることだと思うんだけど、
サイズ指定はConfigure::write()のMedia.filter.imageでAppで共通の設定でしょ
ビヘイビアの引数とか、Attachmentモデルとからへんで指定できてよさそうなのにってはなし
0490nobodyさん2010/06/05(土) 09:45:21ID:xxd6/1g9
CAKEPHPのチュートリアルとか見て勉強中なんですがECLIPSE
でデバッグできると知り、なんとか設定してみました。

が、CAKEで動かそうとするとデバッグできません。
最初の一行で止まるOPTIONでデバッグすると、CAKE内部で止まるのですが
sample_controller.phpとかの行でブレークポイントをつけても無視されてしまいます。

デバッグの構成は

XDebug、Default PHP Server使用で
ファイルは /cakephp/samples
URLは   http://Localhost/cakephp/samples

としています。
なにが原因でしょうか? わかるかた教えてください
0491nobodyさん2010/06/05(土) 18:22:49ID:???
入門書でも買って一から勉強したら?
0492nobodyさん2010/06/07(月) 09:14:03ID:???
CakePHP 1.3.2 released
http://bakery.cakephp.org/articles/view/cakephp-1-3-2-released
0493nobodyさん2010/06/07(月) 09:16:39ID:???
CakePHP1.3.1のキャッシュ関係のバグが直ってるぽい

あと質問時にあげなくても良いからね。って見てないからあげるんだろうが
0494nobodyさん2010/06/07(月) 10:03:53ID:???
IDださなきゃ騙りが出るだろーが
IDだせ
0495nobodyさん2010/06/07(月) 10:12:48ID:nY/RardB

告知させて。
現在のところあまり盛んに動いてるオンライン勉強会がないので
あたらしくグループつくりました。
オンラインでチャット・生中などいろいろ(未定)で
できれば毎晩だらだら勉強やる予定です。
熱意のある人いたらたまーに課題だしてってアプリ作るなんてのも
ありかなと思ってます。

初心者の人はもちろん、おれが仕切って教えてやるわって人も大歓迎です。
0496nobodyさん2010/06/07(月) 10:13:55ID:nY/RardB
グーぐるグループ
「初心者歓迎 PHP勉強会 2ch発」
ttp://groups.google.co.jp/group/2ch-php
php.2ch@gmail.com

参加希望の人いたら、メールくださいな。
0497nobodyさん2010/06/07(月) 10:17:38ID:???
平日やんの?
0498nobodyさん2010/06/07(月) 10:36:57ID:???
cakeなんて勉強会するほどのものじゃないだろ
0499nobodyさん2010/06/07(月) 10:39:58ID:???
あちこちのスレで宣伝してるしPHPの勉強会ということだろう
まぁそんなボランティア精神あふれる社会人はいないけどな
学生か初心者同士が教えあう趣旨ならいいかもしれんが
狭いコミュがいやだから2chにいるわけでわざわざ登録してまでここからいくやつはいるのだろうか・・・
引き抜くならmixiとか教えてgooとかからのほうがいいぞ
0500nobodyさん2010/06/07(月) 10:45:21ID:???
あcakeじゃなくてphpか
学びたいなら2chなんかから一歩外に出たほうがいっぱいあるだろうに
なぜあえて2chとかつけたがるのか甚だ疑問だ
0501nobodyさん2010/06/07(月) 11:17:18ID:nY/RardB
>>497

平日というか、とりあえず毎日でもチャットかスカイプとかで何人か雑談的に
あーだ、こーだ最近のネタとかPHPについて話す場を作って、たまーに課題でアプリでも作って
やってければなってかんじです。
マジメに教えるための素材作ってオフの勉強会みたいにやるのは、たぶんこれまでの
グループとかみても運営に負担かかって衰退するだけなんで気楽にやれればなーってかんじです。

>>498-500

なんとなくやってみるかんじだよー。
mixiとかも考えてみる。
0502nobodyさん2010/06/07(月) 12:11:08ID:???
>>494
変なのが、きちゃったじゃないかよ。。。
05034952010/06/07(月) 14:10:32ID:???
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
0504nobodyさん2010/06/07(月) 17:51:30ID:BTwl7tPr
チュウがしたいの
http://www.youtube.com/watch?v=wR36kSH4qeM
0505nobodyさん2010/06/08(火) 11:06:13ID:???
1.3系の次は2.0になるみたいだね
0506nobodyさん2010/06/08(火) 11:15:15ID:???
>>505
そだよ。
ちなみに2.0はPHP5のみ
0507nobodyさん2010/06/08(火) 11:24:51ID:???
すっきりする
0508nobodyさん2010/06/08(火) 21:32:11ID:???
今まで4が切られていなかったのが奇跡
つーか、PHP4+CakePHPのプロジェクトなんて、片手で数えられるくらいしかないんじゃないか?
0509nobodyさん2010/06/08(火) 22:00:39ID:???
1.3.0入れてBlogのチュートリアルやったんだけど、
記事個別のviewやdeleteのリンクの最後が"/id:1"のようになってしまっていて、動きません
"id:"が余計で"/1"に変えてみたら動くのですが、こうなるのはソースのどこが間違っているのでしょうか?
公式が堂々と間違えているのにぐぐっても特に何も出ない
0510nobodyさん2010/06/08(火) 22:10:19ID:???
>>509
1.3英語版のマニュアルの方を見ると良いです。
'id'=> が余計だね。
0511nobodyさん2010/06/08(火) 22:13:04ID:???
>>510
日本語版はテキスト古いとか出てたので英語版見ながらやったんですが…
もいちどチェックしてみます
0512nobodyさん2010/06/08(火) 22:22:57ID:???
どうやら1.3じゃない版を見ていたっぽい
ctp内の'id'=>を消したらいけました
0513nobodyさん2010/06/08(火) 23:06:25ID:???
1.2以上でセキュリティコンポーネントのrequireAuthを使えてる人いる?
0514nobodyさん2010/06/10(木) 05:07:20ID:???
>>506
どーせなら5.3のみにしてもらってもいいくらいだな。
5でもそれぞれ地味に挙動違うし
0515nobodyさん2010/06/10(木) 06:23:37ID:???
hasOneとbelongToて何が違うの?
機能的には同じものを提供しているように思うんですが
0516nobodyさん2010/06/10(木) 07:04:46ID:???
>>514
それLithium
0517nobodyさん2010/06/10(木) 08:37:39ID:???
>>515
バカだな

ニートなお前は
親に依存してるだろ?→belongsTo
でも逆に親から見ると
親はお前を養ってるだろ?→hasOne

お前兄弟いる?いるなら
親はお前(ら)を養ってるだろ?→hasMany
0518nobodyさん2010/06/10(木) 08:52:47ID:???
>>515
ちがうよ!全然違うよ!
User hasOne Profile だけど、 User belongsTo Country になる。
この場合、Country hasMany User が成り立つ。(別に設定する必要はないが)

相手側から見てhasManyが成り立てばbelongsToだよ
0519nobodyさん2010/06/10(木) 08:55:02ID:???
なぜ使い分けるかは、それぞれ提供されてる機能が違ってくるから。
慣れるまでは>>518を参考に区別しておくと良いよ
0520nobodyさん2010/06/11(金) 09:02:47ID:iUDx5l1B
GoogleブックにCake本が。

オープンソース徹底活用 CakePHPによるWebアプリケーション開発
http://books.google.co.jp/books?id=_6uO_tNQRTUC&printsec=frontcover#v=onepage&q&f=false
0521nobodyさん2010/06/11(金) 16:49:02ID:???
>>520
これ一番わかりやすい本だと思うんだけど絶版なんだよね
全ページを見せてくれてもいいのになあ
0522nobodyさん2010/06/11(金) 19:58:24ID:???
data[0][aaa]
data[0][bbb]
data[0][ccc]
data[1][aaa]
data[2][bbb]
data[3][ccc]
のような配列のバリデーションって出来ますか?
0523nobodyさん2010/06/11(金) 20:14:27ID:???
>>520
本屋にまだ置いてあるでしょ
0524nobodyさん2010/06/12(土) 00:17:39ID:???
CakePHP: the rapid development php framework
Not Found
Error: The requested address '/' was not found on this server.

でハマっています。
Configure::write('debug', 0); を0以外にするとエラーにならなくなります。
どこから調べていけばいいでしょうか…。
0525nobodyさん2010/06/12(土) 03:08:55ID:???
routes.phpとかテンプレートあるかどうかとか。
0526nobodyさん2010/06/12(土) 07:58:43ID:???
>>524
ん?debug 1だとエラーが出ないってこと?
そしたら、layoutsファイル内にecho $content_for_layoutが無いとか?
0527nobodyさん2010/06/12(土) 12:55:30ID:???
debug時になにかしらエラーが出てると思うんだけど
0528nobodyさん2010/06/12(土) 21:20:41ID:???
cakeインスコで聞きたいんですけど(1.3入れました。)
mod_rewriteが効いてない?みたいで
cakeのディレクトリにあるindex.phpが404で開きません。

apacheのhttpd.confと
cakeの3つの.htaccessのRewriteBaseも解説本通り修正したんですが
ほかに何か問題になりそうなところってありますか?
05295282010/06/12(土) 21:40:47ID:???
自己解決しました。
.htaccessのRewriteBase外したらおkでした。
0530nobodyさん2010/06/13(日) 18:44:53ID:???
>>524
それDB接続に失敗しててもなるよ。
0531nobodyさん2010/06/15(火) 12:18:42ID:???
共有SSLを使おうと思ったら、 https://レンタルサーバ/ドメイン名/ と、
サブディレクトリがくっついてきて、そのままだとCakePHPの吐き出す絶対パスが
合わなくなってしまいます。

mod_rewriteのrewritebaseで設定すればいけると思いますが、ホスト名によって
rewritebaseを複数設定することは可能でしょうか?
0532nobodyさん2010/06/17(木) 13:15:31ID:???
cake/libs/session.php
を改造したいんですが、
直接ファイルに手を入れずに別の場所において修正する事は可能でしょうか
ヘルパーを改造したいときに
cake/libs/view/helpers/*.php

app/views/helpers/

置くのと同じイメージでできればと思ってるんですが
0533nobodyさん2010/06/17(木) 13:39:37ID:???
views以下のテンプレートにctpじゃなくてPEARのHTML_Template_Sigmaを使いたいんですが
そういう改造を施した例とかどこかにないでしょうか
HTMLとPHPをなるべく分離したいのです
よろしくお願いします
0534nobodyさん2010/06/17(木) 14:22:14ID:bowe+bRa
>>531
できるんじゃない?

>>532
app/session.phpにコピーすれば、そっちが優先して動くんじゃない?

>>533
Smarty使う方法はたくさん解説されてるから、それを参考にすればよいんでない?
0535nobodyさん2010/06/17(木) 14:37:47ID:???
直訳:ググレカス
0536nobodyさん2010/06/17(木) 16:08:10ID:???
1.3.2のPagenatorで、$pagenator->counter(array('format' => '%count%件'));
とかやって表示件すとか色々出力しているのだけど
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 543]
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 545]
ってエラーがでる。
controller側で
$this->paginate = array(
'fields' => 'hoge',
'conditions' => array(...),
'limit' => 10,
'order' => 'id asc',
);
$this->paginate('model');
って、limitの指定をしているのになぜ?
0537nobodyさん2010/06/17(木) 16:44:56ID:???
そのエラーの原因を追えないとか終わってるだろ
もうやめとけ
0538nobodyさん2010/06/17(木) 17:02:15ID:???
わかったlimitが無いんだ!
0539nobodyさん2010/06/17(木) 17:12:17ID:???
そういう理不尽なエラーはしょうもないスペルミスだったりすることが多いな。
0540nobodyさん2010/06/17(木) 17:34:38ID:???
疲れてるとハマるんだよな
0541nobodyさん2010/06/17(木) 18:28:29ID:???
データが来ない。おかしい!ってさんざんモデルだの何だのひっくり返してみて
conditionsがconditonsだったのを発見した時の脱力感・・・
0542nobodyさん2010/06/17(木) 18:29:48ID:???
あるあるw
0543nobodyさん2010/06/17(木) 20:17:00ID:???
そういうのってEclipseとかが教えてくれないの?
0544nobodyさん2010/06/17(木) 20:36:01ID:???
スペルチェックオンにすれば教えてくれそう
0545nobodyさん2010/06/18(金) 09:40:58ID:???
だからCakeはエラー発生箇所が異次元なんだよ。
Strutsの黎明期そっくりだ。
0546nobodyさん2010/06/18(金) 12:07:08ID:???
>>545
他のFW使ったことないけど
PHP系FWのマニュアル見てるとどれも辞書で設定してるし
どっこいな気がする
0547nobodyさん2010/06/18(金) 17:17:03ID:???
ページの先頭にどうしても空行が入ってしまうのですが、
回避する方法はあるのでしょうか?

dispatche.phpのechoしている部分の前に、
「ob_clean();」を追加しても解消しませんでした。
0548nobodyさん2010/06/18(金) 17:42:07ID:???
>>547
回避すること考えるより、どうやって該当箇所を発見するかを考えたほうが遙かに前向きだと思うんだが
0549nobodyさん2010/06/18(金) 18:21:07ID:???
>>547
ソースを全部さらしたら、探してあげてもいい
0550nobodyさん2010/06/18(金) 18:55:36ID:???
>>547
どうせどっかのコードの最後の?>の後に改行が入っているのだと思われる
0551nobodyさん2010/06/19(土) 04:33:18ID:iks7bUVl
1.2なんですけど

viewとかcontrollerとかで、その場でHelper使いたいとき
App::import('Helper', 'Form');とか例えばやったとして
new Formして $form->input();とか使うと、
Undefined property: FormHelper::$Html って怒られます。
自動で FormHelperクラスの $helpersを読み込むのをやってくれないんだと思うんですけど
どうにかして正常に動作させられないですかね?
調べると英語で同様の症状を訴える投稿はありますけど明確な回答が見つからんです。
0552nobodyさん2010/06/19(土) 04:45:21ID:???
Undefined property: FormHelper::$Html

そのまんまなのだがw

HTMLヘルパーも読み込んでみれ
0553nobodyさん2010/06/19(土) 11:10:38ID:???
>>546
知らないなら黙ってた方がいいよ。
0554nobodyさん2010/06/19(土) 11:39:47ID:???
>>553
というと?
0555nobodyさん2010/06/19(土) 15:47:58ID:???
formヘルパーでラジオボタンとかセレクトボックスを生成したときに、
「デフォではxを選択した状態だけど、バリデーションエラー時とかにはユーザーが選択した状態」
にするにはどうしたらいいの?
optionでselected設定しちゃうと、バリデーションエラー時にその設定が優先されちゃって
ユーザーの選択じゃなくなっちゃうんだけども
0556nobodyさん2010/06/19(土) 16:10:46ID:???
$form->うんちゃら('hoge',array('value' => $value));
で普通にいけない?
ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
ユーザからのデー座がある場合は、それを上書きして view に渡す。
0557nobodyさん2010/06/19(土) 16:40:56ID:???
>>556
>ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
やっぱりそれしかないのかな
フォームヘルパー自体でそういう機能を備えてくれてるといいんだけど、
コントローラー側で一手間かかるのを、出来れば省略したい
0558nobodyさん2010/06/19(土) 17:08:19ID:???
>>557
つ array('default' => 'x')

あんまり使ったことないけどね
初期値与えるならcontroller(model)のほうがいいと思うなあ
0559nobodyさん2010/06/19(土) 17:34:03ID:???
>>558
まさにそれ!ありがとう!
確かにモデルと関連させてデフォを決める場合には、ヘルパーで決めちゃわない方がいいかもしれないけど、
とりあえずこれで行くわ
0560nobodyさん2010/06/19(土) 17:40:13ID:???
>>559
あ、最後のはひとりごとだから気にしないで

あと、データが0のときは、デフォルトの値に上書きされるかも。要注意
0561nobodyさん2010/06/19(土) 17:44:38ID:???
1.3から$this->set(compact('foo_bar'))したときにキャメルケースに強制変換されなくなった?
0562nobodyさん2010/06/19(土) 18:02:08ID:???
このスレレベルたけぇな
0563nobodyさん2010/06/19(土) 18:30:07ID:???
>>561
されなくなった
0564nobodyさん2010/06/19(土) 20:21:15ID:???
>>562
それ皮肉だってことが分からない人がいるから、はっきり言ってあげた方がいいよ
0565nobodyさん2010/06/19(土) 20:24:22ID:???
皮肉なんか言ってやるなよ
かわいそうだろ
0566nobodyさん2010/06/19(土) 21:06:08ID:???
まあこのような、わけのわからんこと言い出す連中が
一番低脳だというのは言うまでもない話。
0567nobodyさん2010/06/19(土) 21:50:44ID:???
page以外のnamedパラメータを使ってpaginationすると、URLの最初にpage:xが来てしまいます

例えば
/status:active/page:2 にアクセスすると
nextのリンクは /page:3/status:active になる
といった感じです

コードを追ってみたところ、pagination helperの中でnamedパラメーターを配列として扱って、
array_margeを何度か行っている関係で、pageが配列の一番最初に来てしまって、結果、
URLの一番最初のnamedパラメーターとして表示されてしまっているようです
pagination helper自体をいじって、最終的にpageを配列の一番最後に持ってくれば
正しく動きそうですが、他にもう少しスマートな方法はないでしょうか・・・
05685672010/06/19(土) 22:20:31ID:???
一応、pagination helperの362行目に
if(isset($url['page'])) {
$page = $url['page'];
unset($url['page']);
$url = array_merge($url, array('page'=>$page));
}
を追加したら、page:xが一番最後に来るのを確認できました
05695512010/06/19(土) 23:15:37ID:iks7bUVl
>>552
そりゃわかるんですけど
そもそも読み込まれないのがなんとかならないかという話です。

App::import('Helper', 'Form');
App::import('Helper', 'Html');
$form = FormHelper;
$form->Html = HtmlHelper;

ここまでやればHtmlがないとは怒られないですが、$form->webrootがセットされていなかったりと、
そもそもApp::import('Helper' が用意されているのにも関わらず、
ちゃんと使える状態にならないってのもおかしいのではないかと思い質問させていただきました。
0570nobodyさん2010/06/20(日) 01:15:11ID:???
>>569
controllerで同じ亊してsetで渡しなよ
0571nobodyさん2010/06/21(月) 13:51:06ID:???
>亊
0572nobodyさん2010/06/21(月) 17:40:58ID:???
http://xxxx/(アプリ名)/test.php
で、適切なデバッグレベルの場合はテストが実行されますが、これを無効にする方法はありますか?
本番リリース時などでデバッグレベルを0にした場合、テスト自体は行われませんが
「Debug setting does not allow access to this url.」
などというメッセージが出てきます。

こういう場合はwebroot直下のtest.phpを削除するのが正しいですか??
0573nobodyさん2010/06/21(月) 18:32:34ID:???
>>572
htaccess に404でリダイレクト知るように書けば
0574nobodyさん2010/06/22(火) 20:20:10ID:???
validationって、使うコントローラーによって切り替えたりとかできないですかね?
0575nobodyさん2010/06/22(火) 20:47:10ID:???
ビューの中でfunctionを作って、
その中でヘルパーを使いたいときは
引数で渡す以外にどうすれば上手くできるでしょうか
0576nobodyさん2010/06/22(火) 21:09:04ID:???
>>575
素直に独自Helperに書きましょう
0577nobodyさん2010/06/23(水) 02:28:29ID:???
Authで会員ログイン機能を実装して例えば写真を見せるサイトを作ったとして、
退会すると当然Authによりはじかれてログインはできないけど、
写真に直接アクセスされたとき、はじかれませんよね?
写真一枚表示するのにCakeのコア動かしてAuthログイン判断してってのは負荷が心配だし
なにかいい方法ないですかね?

ファイル名をランダムにしててもメモされたら意味ない
でもメモする位ならファイル保存しない?じゃあよくね??みたいな永久ループしてます。
0578nobodyさん2010/06/23(水) 02:41:17ID:???
まぁほんとに見せたくないならauthかますしかないわな
コストと実利を天秤にかけろ
0579nobodyさん2010/06/23(水) 09:38:51ID:???
>>577
ttp://neta.ywcafe.net/000774.html
この考え方で出力すればよい
(キャッシュは定期的に削除する)

が、どのみちURL叩かれたら退会前でも会員以外の人に見られるのは一緒
mixiが以前そうだったね
0580nobodyさん2010/06/23(水) 12:39:45ID:hpuIM/fT
DBのクエリ実行自体は 20ms ぐらいなのに、HTMLの出力に1〜5秒ほどかかってしまう場合
どこが原因かチェックする方法ってありますか?
Controller自体は、find() を2回使って、出力するHTML自体も20Kb程度です。
0581nobodyさん2010/06/23(水) 12:44:17ID:???
クライアントのCPUが弱い
0582nobodyさん2010/06/23(水) 13:06:06ID:???
>>580
DebugKitつかってる?どこで何ミリ秒かかってるかとか詳細がみれるよ
0583nobodyさん2010/06/23(水) 13:58:09ID:???
独自のグローバル関数を追加する方法は
cake\basics.phpに追加する以外に
何か方法はありますか?
0584nobodyさん2010/06/23(水) 14:11:23ID:???
ヘルパー化する
0585nobodyさん2010/06/23(水) 15:24:39ID:???
>>583
app/config/bootstrap.php
0586nobodyさん2010/06/23(水) 18:19:33ID:???
1.3を使っています。
Authコンポーネントを使い基本的なログイン機能を作っていたのですが
core.phpを書き換えてセッションをDB管理したら
ログイン出来なくなりました。
エラーメッセージも出ず、auth.phpを上から見ていってるのですが
どこでつまづいてるのかわかりません。
セッションをDB管理し、authを使うには何か設定が必要でしょうか
0587nobodyさん2010/06/23(水) 18:20:11ID:???
cakePHPにはDB接続をサポートする機能が搭載されていますが、
それを使わずmysql_connectやpear::DBを使ってDB接続することはありますか?
0588nobodyさん2010/06/23(水) 18:26:15ID:???
>>582
ありがとうございます。DebugKit導入しました。
これで少しは原因が分かりそうです。
0589nobodyさん2010/06/23(水) 18:53:01ID:???
>>587
ない
0590nobodyさん2010/06/23(水) 23:04:49ID:???
一部を除いた全ソースから?>を削除した
こんなもんいらね
0591nobodyさん2010/06/23(水) 23:10:47ID:???
あぁ?>いらないんだよね
ていうか開発者から、取るのを推奨されているんだっけ?

何のためかは良く知らないけど
改行が入ったりの予防くらい?
0592nobodyさん2010/06/23(水) 23:24:38ID:???
俺は?>は書かないし、viewで極力セミコロンを付けない
でも最初からあるコードは基本的に放置だな
むしろ手を加えることで何か不具合出してしまいそう
0593nobodyさん2010/06/23(水) 23:54:21ID:???
>>592
>viewで極力セミコロンを付けない

<? echo $hoge ?>
こういうこと?
0594nobodyさん2010/06/24(木) 00:20:59ID:???
>>593
うん、<?php echo $hoge ?>だけど
0595nobodyさん2010/06/24(木) 00:29:11ID:???
どうでもいいよ
0596nobodyさん2010/06/24(木) 01:10:16ID:???
まぁプログラムって運だからな
0597nobodyさん2010/06/24(木) 02:10:58ID:???
は?書いたようにしか動かないよ
何いってんの?
0598nobodyさん2010/06/24(木) 08:28:24ID:???
>596
ちげぇよ愛だよ
0599nobodyさん2010/06/24(木) 13:44:40ID:???
>586

coreに記述されているハッシュの種が変わったから、
違うパスワードが生成されているんじゃないの?
照会SQLを確認してみな。
0600nobodyさん2010/06/24(木) 23:26:58ID:???
まるでIEのHTML勝手解釈だな。
そのうちPHPの仕様が変わって絶滅するだろうな。

ガハハハハハハハハ
0601nobodyさん2010/06/24(木) 23:45:45ID:SNEZsqXV
<?php e(date(__('F j,Y'),$times)); ?>

とcakePHPによる実践アプリケーション開発 という本に
例があり一部抜粋したのですが、この先頭のeとは何なんでしょうか?
0602nobodyさん2010/06/25(金) 00:06:12ID:???
>>601
echoの短縮表記
0603nobodyさん2010/06/25(金) 08:04:32ID:???
debugが1以上だと、HTMLの最後に<!-- 0.00sec -->みたいな出力にかかる秒数書いてあるけど
Ajaxで使うときはエラーになって邪魔です。Ajaxで使うときは出力しないようにできませんか?
0604nobodyさん2010/06/25(金) 08:55:39ID:???
>>603
beforeRenderとかで
if ($this->RequestHandler->isAjax()) Configure::write('debug',0);
って感じ
0605nobodyさん2010/06/25(金) 10:22:11ID:???
>599
照会SQL確認して、
セッションテーブルのIDをintにしていたのが間違っていました
ばーちゃーにしたらうまく動きました。
ありがとうございます!
06066032010/06/25(金) 10:24:39ID:???
>>604
なるほど!RequestHandlerがあったんですね。ありがとうございます。
0607nobodyさん2010/06/25(金) 18:49:37ID:0V5oobxv
>602
ありがとうございました。

0608nobodyさん2010/06/25(金) 20:47:40ID:???
普通RequestHandlerを使うとLayoutがajaxになると思うが、みんなはajax.ctp使ってないの
0609nobodyさん2010/06/25(金) 20:55:23ID:???
なにがだ
0610nobodyさん2010/06/28(月) 01:42:58ID:???
CakePHPって新規開発にしか使えないよね。
0611nobodyさん2010/06/28(月) 04:10:11ID:???
何を期待してるんだ?
何ができれば”既存案件で使える”になるんだ?
0612nobodyさん2010/06/28(月) 10:41:06ID:???
session管理ってcookie使ってますか?

情報の引き渡しにsessionを多用してたら、複数のブラウザを立ち上げて
並行してオペレーションを行うと動作がおかしくなりました。
同じsessionを複数のオペレーションから参照してるので当たり前といえば
当たり前なのですが。

こんな場合はURIにsession idを含めるとか、そういう対処が一番ですかね?
0613nobodyさん2010/06/28(月) 11:07:09ID:???
何を期待してて
でもどうなった
だからおかしいと思ってる

ってのが分らなけりゃ答えようがないと思わないかい?
はいかいいえで答えてくれ
0614nobodyさん2010/06/28(月) 11:30:46ID:???
いいえ
06156122010/06/28(月) 11:56:53ID:???
>>613
はい、その通りです。例をあげると
http://sample.sakushima.net/Cake/sessions/
ブラウザを2つ立ち上げて、このページをそれぞれ開きます。
2つのブラウザを順番にリロードすると、リロードした順に1,2,…と回数が上がります。
2つのブラウザで同じSessionを共有しているので、この動作は正しいと思います。

やりたいことは、上記の動作を行った際、2つのブラウザそれぞれで1,2,…と回数を上げたいのです。
実現方法ご存じの方お教えください。
0616nobodyさん2010/06/28(月) 12:06:27ID:???
>>615
認証済みのユーザーということじゃないんだよね?
そうすると、2つのブラウザのアクセスが同一人物だと判定しなきゃいけない

URLに埋め込むとセッションハイジャックされるリスクを負うんじゃまいか?
0617nobodyさん2010/06/28(月) 12:13:19ID:???
>>610は名称可変のコピペだろ
0618nobodyさん2010/06/28(月) 15:17:05ID:???
User.id User.name
Diary.id Diary.user_id Diary.body
Comment.id Comment.diary_id Comment.body
というDB構成で作っているときに、
「最新のコメント10件がが誰の日記に向けて書かれたか」を表示させるとき、
$this->Comment->findで、recursiveを2にしてデータを取ってきてるんだけど、
CommentとDiaryがJOINされるんだけど、それとは別にUserのデータを
取ってくるのに10回もSQLを投げてしまうのはしょうがないものなの?
CakePHPが副問い合わせに対応していないせい?

表示させたいのは
>最新のコメント10件
> こんにちは → Aさんの日記
> お久しぶりです → Bさんの日記
> 面白いですね → Aさんの日記
> ...
という感じなんだけど
0619nobodyさん2010/06/28(月) 19:53:05ID:qHDwmPz9
VIEWのCTPファイル内で、TABLEの幅を400pxに固定したいんですが。

<TABLE width="400px"> として表にしてもブラウザの幅に
あわせて伸び縮みしてしまいます。
デフォルトのCSSファイルより、優先されると思うのですが何故でしょうか?

CSKEPHPはver1.2です。
0620nobodyさん2010/06/28(月) 20:02:50ID:???
<TABLE width="400">
htmlはpxいらねーよ
てか悪いことは言わん。この業界あきらめろお前は
0621nobodyさん2010/06/28(月) 20:26:44ID:???
仕事とは限らないとおもた
0622nobodyさん2010/06/28(月) 20:27:47ID:qHDwmPz9
>620
なるほど、うまくいきました。
ありがとうございました。
0623nobodyさん2010/06/28(月) 20:36:54ID:???
仕事だろうと趣味だろうとなんでもいいやめろ
HTML/CSS/PHP/CakePHPこれらを切り分けもできずに
こんなところで糞な質問しちゃう奴なんざやめろ今すぐ。
0624nobodyさん2010/06/28(月) 20:44:55ID:???
まあスレ違いではあるね
今後は気をつけるだろう
0625nobodyさん2010/06/28(月) 23:42:04ID:???
こええよw
0626nobodyさん2010/06/28(月) 23:52:38ID:???
みんな、メモリはどれくらい使っているのか知りたい。
1セッション当たり、10MBくらいは普通かな?
0627nobodyさん2010/06/28(月) 23:54:20ID:???
>623
優しい奴だな。ちょっともえ
0628nobodyさん2010/06/29(火) 07:25:59ID:???
HTMLで悩むならまずとほほを読んで来い。
あそこは世紀を超えての名サイトだ。
0629nobodyさん2010/06/29(火) 08:46:43ID:???
〉〉623
これをリアルで言われて
言われたヤツやめちゃって
やめたヤツの仕事が俺に回ってきて
言ったヤツ知らん顔
俺涙目
06306122010/06/29(火) 12:04:06ID:???
>>615
結局やりたいことというのは
「同時にブラウザを複数立ち上げたときに、それぞれ別々に状態を保持しておきたい」
ということです。極端な話、ブラウザ1・ブラウザ2でそれぞれユーザー1・ユーザー2
で認証をしたら、それぞれのユーザーで独立して動作するイメージです。

実際に作っているアプリでは、認証情報・画面遷移情報・入力データなど、結構な量の
データを画面間で保持する必要があります。実現方法として考えているのは下記です。
1.URLにSession IDを埋め込み、それを基にServer側で使うべきSessionを切り替える
→携帯サイト向けのサンプルは見つかった。いまいち良いサンプルが見つからない
2.引き継ぐ情報をまとめてシリアライズ・暗号化してURL・POSTで渡す(極力Sessionは使わない)
→通信データサイズが結構な量になるかも・・・

こうしたほうが良い等ご意見ありましたらお教えください。。
0631nobodyさん2010/06/29(火) 12:16:19ID:???
>>630
ん?>>616だけど完全に逆だと思ってた。
っていうか、違うブラウザなら、別のセッションだと認識されるのが普通だが、どんな環境でチェックしてるの?
FFとChromeでやってみたが、ふつうにそれぞれ独立してインクリメントされるよ??
06326122010/06/29(火) 12:47:04ID:???
>>631
こちらではIE8、FF、Chromeともに下記の動作となります。
時系列で書きます。

ブラウザ1を起動
ブラウザ2を起動
ブラウザ1で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:1
ブラウザ2で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:2
ブラウザ1でF5(リロード)→表示回数:3
ブラウザ2でF5(リロード)→表示回数:4
06336122010/06/29(火) 12:55:56ID:???
>>632
補足で、ブラウザ1・2ともに同じ種類のブラウザです。
もしかしたら616さん、ブラウザ1:FF・ブラウザ2:Chormeとか、
別のブラウザを立ち上げてるんじゃないかと。
0634nobodyさん2010/06/29(火) 16:46:35ID:???
クライアント側でUAを変えるなどの小細工が許されないのなら、
サーバ側で何らかの識別データをGET/POSTで埋め込むのしか思いつかない。。
0635nobodyさん2010/06/29(火) 17:07:06ID:???
>>633
うん。そうだよ。別のブラウザでやった。
同じブラウザのタブ別で別ユーザーだと認識させたいの?
そりゃまた無茶なことを、、、
0636nobodyさん2010/06/29(火) 17:11:36ID:???
なにがしたいのかわかりません。
0637nobodyさん2010/06/29(火) 17:35:04ID:???
Macで開発中にwebkitを使ってプレビューするソフト(codaとかCSSEditとか)を同時に使うと
セッションが切れちゃって確かに鬱陶しいけど、まあ開発中の一時的なもんだしなあ。
0638nobodyさん2010/06/29(火) 23:52:30ID:???
CakePHPって新規案件でしか使えないよね。
0639nobodyさん2010/06/30(水) 00:49:39ID:???
俺なんて5年くらい前に作ったデータ管理がファイルベースのシステムをcakeに移行中だ
データをmysqlに移行する以外は意外とめんどくさくない
0640nobodyさん2010/06/30(水) 15:36:49ID:???
>>638>>617でFA
0641nobodyさん2010/06/30(水) 19:52:27ID:???
modelを新しく作るたびに、毎回データベースにテーブルを作らないといけないのでしょうか?

Fatなコントローラーをmodelに集約しようと思い、
新しく scrape というモデルを作って、動かしてました。

ローカルでは普通に上手く行くのですが、
いざWEB上で動かすと、

Database table scrapes for model Scrape was not found.

というエラーメッセージが。。
0642nobodyさん2010/06/30(水) 20:10:45ID:???
>>641
データベース 使わない model cakephp
でググるんだ
0643nobodyさん2010/06/30(水) 20:11:23ID:???
あほっぽいのの相手はしたくないけど
modelで
var $useTable = false;
だったかをするとテーブルなくても怒られないけど?
0644nobodyさん2010/06/30(水) 20:13:05ID:???
書く前にリロードすればよかった
すまそ
0645nobodyさん2010/06/30(水) 20:24:17ID:???
>>642
>>643

解決しました!

初歩的すぎる質問どうもすみませんでした。。
0646nobodyさん2010/07/01(木) 04:37:27ID:???
>>645
一応チュートリアルにもあるが、Cakeで始めにはまる落とし穴。
あと>>643とか使えないヤツだから気にするな。
0647nobodyさん2010/07/01(木) 10:24:02ID:???
paginate()をカスタマイズしたいのですが、ソートが機能しなくて困っています。

モデルAのpaginate()の中で
SELECT * FROM a, b, c WHERE a.b_id = b.id AND b.c_id = c.id;
という形のSQLを発行しているのですが、
<th><?php echo $paginator->sort('c.name');?></th>
のリンクをクリックしてもソートされないのです。
モデルAとCはリレーションがないため、
paginate()の$order引数に 'c.name' => 'asc' が入ってこないようです。
どうすればいいでしょうか?
0648nobodyさん2010/07/01(木) 13:01:04ID:???
チューとリアルとかマニュアルに書いてあることを人に質問するとか終わってるだろ
二度と来るな
0649nobodyさん2010/07/01(木) 16:03:56ID:???
ionCube PHP Encoder等のソース暗号化ツールを適用させて
cakeを動かした例はあるでしょうか。

同業者からの依頼でcakeを使う予定なんですが、再利用される恐れがあるため
なんとかできたらと考えてます。
0650nobodyさん2010/07/01(木) 16:57:28ID:???
>>649
ionCube Japan アシアル株式会社に電話して聞けばいいじゃん。
ただの商品じゃないんだし。
0651nobodyさん2010/07/01(木) 17:10:35ID:???
>>649
使ってみたことあるよ
0652nobodyさん2010/07/01(木) 18:58:02ID:???
\app\views\layoutsの中にベースデザインが入ってるctpファイルがあるんだけど
そのファイルのソース中にリンク、例えばhote.htmlがあると出力したときに

hoge.html?CAKEPHP=681a529c456e8da3f6a2e39219c8f4ca

と言う文字列が必ず付くのですがこれはどうすれば消せますか?
と言うか何のためにリンクに文字列が付いて出力されてるんでしょうか?
0653nobodyさん2010/07/01(木) 20:23:40ID:???
>>652
それセッションIDだろ
session.use_trans_sid = 0にするか、セッション使わない設定にしたら?
0654nobodyさん2010/07/01(木) 21:58:57ID:???
>>649
アプリの挙動が変わることもあるみたいだね。
06556472010/07/01(木) 22:49:41ID:???
$this->A->bindModel(array('belongsTo' => array('B', 'C')));
で動的に関連をセットすることでできました。
0656nobodyさん2010/07/03(土) 02:07:02ID:???
MediaPluginでvideoファイル扱ってる人いる?
ffmpegもインストールしてやってるんだけど
初期から入ってるvideoのサムネイル設定なのに
Medium::make - Invalid instruction `VideoMedium::fitCrop()`.
とかなって死ぬ
なんか設定が足りないのかサポートされてないのか
というかMediaPluginと動画の話題が全然ぐぐってもヒットしないんだけどみんな使わないのかな
0657nobodyさん2010/07/03(土) 02:44:20ID:???
ありゃ??でけた
一応書いておくと

filterの指定を↓見たいにしてたんだけど
array('fitCrop'=>array(100, 100), 'convert'=>'image/jpeg')
するとvideoのClassをよむからメソッドがなくて怒られる

まさかとは思ったけど順番変えて最初にconvertおくと
array('convert'=>'image/jpeg', 'fitCrop'=>array(100, 100))

ちゃんと変換してくれました。
スレ汚しすまんです。
0658nobodyさん2010/07/03(土) 04:16:09ID:???
みんな動画扱わないのかな

ついでに汚します。寝たかったのにはまって一応解決?したんで

wmvをアップして画像とかflvとかに変換したかったけどできない。
mpgならできたのに・・・ってなって四苦八苦

で、MediaPluginのソースいじることになるんだけど
vendors/......../ffmpeg_video.php
で最初に定義されてるrequire['mimeTypes']の
mswmv
ってのを
ms-wmv
に変更したら動いた。

同じ階層にあるgetid3_video.phpでも同じように定義されてあるんだけど、
そこではms-wmvになってるんだよね。揃えてみたら動きました。
なんかよくわからんが一応解決です。
0659nobodyさん2010/07/03(土) 07:41:45ID:???
最近CakePHPを学習しはじめた者です。
PHP自体は理解しており、MVCも理解しているつもりです。

とりあえず学習の定番と言えそうな本家(日本語)のチュートリアルをやってみました。
でもこれだけでは、その後独力でCakePHPの学習を推進していくチカラが得られませんでした。

チュートリアルのつぎのステップとしてお勧めな学習方法を教えてください。
(マニュアルを理解するには、チュートリだけでは知識が浅すぎると感じました)

よろしくおねがいします。
0660nobodyさん2010/07/03(土) 07:55:26ID:???
>>659
何かアプリ作りましょう
実践して、詰まって、解決策を自分で見つけてるうちに使えるようになるよ
0661nobodyさん2010/07/03(土) 09:36:37ID:???
テストプロジェクトとかじゃなしに、
実際の開発プロジェクトで、みんなadmin routingとか使う?
0662nobodyさん2010/07/03(土) 09:49:14ID:???
>>660
チュートリアルをやれば、あとは独力ということですね。

でも、チュートリアルを一通りやっただけで、独力で解決策を見出しながら開発を
進めていくチカラが付いたとは思えないんですけど・・・

CakePHPは習得が簡単だと思っていましたけど、実はかなり敷居が高いのでは
ないかと思ってしまいます。
0663nobodyさん2010/07/03(土) 10:13:10ID:???
>>662
それ、そもそもPHPの習得を一通りこなせていないのでは?
0664nobodyさん2010/07/03(土) 10:33:21ID:???
>662
何でひっかかってるんだい?
チュートリアル+入門書だけでスタートアップは十分だと思うけどな・・・
0665nobodyさん2010/07/03(土) 12:03:57ID:???
作成したテキストなどのファイルを一時的に保存しておくには
app/tmp/
の中に適当なディレクトリを作って保存する方法で構わないんでしょうか。

他に適切な配置場所があれば教えていただきたいです。
0666nobodyさん2010/07/03(土) 16:09:42ID:???
1.3の$js->linkなりで、updateの複数指定って出来なくなりましたよね?
代替の書き方ってあるんでしょうか?
0667nobodyさん2010/07/03(土) 16:49:44ID:???
>>659
cakeの実践アプリケーションの本でも買ったら?
あとはcakeの開発陣の人たちはgitとかで他人のコードを読みまくるのが大切と言ってたと思う

>>665
app/tmp/の中は基本的に消えちゃってもかまわないキャッシュファイルとかの置き場なので
作成したテキスト(がどんなものなのか知らないけど)がそういうたぐいのデータならそこでいいと思う

誰か>>618答えてくれー・・・
0668nobodyさん2010/07/03(土) 17:39:44ID:???
>>659
PHPのサンプル本とかで「○○の作り方」ってのを一個一個おさらいしていったらいい
それができれば、あとはcakeの中でそれらをくっつけていくだけでしょ
0669nobodyさん2010/07/03(土) 21:12:12ID:???
>>662
チュートリアルをそのまま殆ど写しただけで「終わりました」とか言ってないか?
そりゃ身に付いてるはずがない。
コピペすれば動くんだから、エラーの時の問題解決なんか出来るようになるわけないわな。

1から作るのがまだ辛いなら、チュートリアルアプリをなにか改造してみれ。
画面を増やすとか、レコード(テーブル)にカラム追加するとか、入力チェック追加するとか。
0670nobodyさん2010/07/04(日) 17:29:17ID:???
CakePHPは独力での学習コストは高いよ。
マニュアルがうんこだから。
非公式のチュートリアルもロクなもんがないしな。
0671nobodyさん2010/07/04(日) 17:46:20ID:???
object思考なにそれ?なおれが習得できたんだからそうでもないと思うけどな
0672nobodyさん2010/07/04(日) 18:30:42ID:???
CakePHPは独力での学習コストが高いと思うのは、
お前にとってCakePHPがはじめて使うフレームワークだからだろ。
0673nobodyさん2010/07/04(日) 19:01:49ID:???
よし学習コストが高いフレームワークを教えろ早く
0674nobodyさん2010/07/04(日) 19:19:56ID:???
.netはコスト高いぜ
0675nobodyさん2010/07/04(日) 19:30:42ID:???
struts
0676nobodyさん2010/07/04(日) 19:38:11ID:???
フレームワークが初めての人向けのチュートリアル
と、
フレームワークを既に知っている人向けのチュートリアル
があると、普及が促進されるかもね。
0677nobodyさん2010/07/04(日) 19:43:15ID:???
前にも誰か言ってたけど
バッドノウハウ的なもんがちょっと多いかなとは思う
0678nobodyさん2010/07/04(日) 20:39:01ID:???
>>674
.netはコスト低いだろ。
といってもmsの掌で踊るようなコードを書いてる限りだが。
0679nobodyさん2010/07/04(日) 23:19:50ID:???
チュートリアルと、実際に作るアプリの間に大きなギャップがあるのは確かだな。
チュートリアルを終えて、実際のアプリを作っていくうえで
「ここはどうやるんだろう」ということを何回も調べなければならない。
ま、どんなフレームワークでもそうだが、Cakeはチュートリアルが薄すぎる。
>>662が言っているのもそういうことだろう。
0680nobodyさん2010/07/04(日) 23:39:54ID:6la4DkIe
チュートリアルが薄いっつーのもあるけど
実際に開発通じての経験から言うと
フレームワークの設計の難に由来してる問題点も少なくないなと思った
よく知られてる大きなプロジェクトとかが
他のへ移行してしまうのは
やっぱそういった事も関係してるだろうなと思ったよ
0681nobodyさん2010/07/05(月) 00:27:13ID:???
CakePHPさわって、他のMVCフレームワークさわってみれば良いんじゃないの?
遠回りかもだけど、それぞれの似ているようで違う仕組みだから、より理解しやすいかも。
そして、CakePHP以外に合うものが見つかるかも。
0682nobodyさん2010/07/05(月) 01:12:10ID:???
俺ちゃんとつかったのはCakeが初めてなんだけど、他のFWに比べてCakeの良い点って何でしょう?
Javaの何かと比べると、覚える事が意外と少ないな、という印象なんですが・・・
0683nobodyさん2010/07/05(月) 01:19:57ID:???
単純なCRUDアプリを作る上では、これ以上手順は減らせないだろうというくらいに
簡単な手順で作れるよね。

手を入れようとすると大変だけど。
0684nobodyさん2010/07/05(月) 03:55:03ID:???
でもWebに情報量多いよね
ぐぐればたいてい解決してる
0685nobodyさん2010/07/05(月) 07:40:52ID:???
>>680
移行先は何が多いの?
0686nobodyさん2010/07/05(月) 12:20:49ID:???
1.3で、Shellからviewのレンダリングを使うにはどうすればいいんですか?
レンダリングしたものを、ファイル出力するシェルプログラムを組みたいのですが…。
0687nobodyさん2010/07/05(月) 12:56:52ID:???
>>686
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1774&forum=3
これでどう?
0688nobodyさん2010/07/05(月) 16:54:56ID:???
=3が絵文字みたいでかわいい
0689nobodyさん2010/07/05(月) 17:52:47ID:???
お前のほうがかわいい
0690nobodyさん2010/07/05(月) 18:02:13ID:???
:=3
0691nobodyさん2010/07/05(月) 20:02:09ID:???
ヘルパーで出力するものをXHTMLじゃなくてHTMLにできない?
0692nobodyさん2010/07/05(月) 20:37:48ID:???
なにいってんのこのバカ↑
0693nobodyさん2010/07/05(月) 20:59:19ID:???
>>692
nl2brで言う、is_xhtmlみたいなオプションないの?って意味
0694nobodyさん2010/07/05(月) 21:17:00ID:???
ソースみじけえから読んでこいやバカ
http://api.cakephp.org/view_source/html-helper/

オプションなかったら継承してtag書き換えるとか勝手にしろやアホ
0695nobodyさん2010/07/05(月) 23:22:21ID:???
このスレ専門的な単語が飛び交ってレベルたけぇわ
0696nobodyさん2010/07/06(火) 00:53:44ID:???
>>694
説明不足ですまん、ソース追ったけど見つけられなかったんだ
継承して書き換えもいいけど、末尾の3文字削って>付け足すわ
0697nobodyさん2010/07/06(火) 11:07:43ID:???
postgresでgetLastInsertIDを使う場面で、
複数タスクが走っている場合に
別のタスクのidを取得しちゃう可能性がある。っていう記述を
見つけてしまったんですが、
対処方法はどういったやりかたが考えられますか?
0698nobodyさん2010/07/06(火) 11:24:19ID:???
何それ
糞だな
0699nobodyさん2010/07/06(火) 11:26:35ID:???
その見つけた情報ソースを教えろ
0700nobodyさん2010/07/06(火) 11:40:57ID:???
getLastInsertID
でググったらでてきました
0701nobodyさん2010/07/06(火) 12:03:46ID:???
だからどこだよ?
0702nobodyさん2010/07/06(火) 12:56:26ID:???
ttp://sfi.hamazo.tv/e1655939.html
こちらです
0703nobodyさん2010/07/06(火) 13:57:00ID:???
なんかギスギスしてるな
0704nobodyさん2010/07/06(火) 14:58:46ID:???
どこだどこだと聞いといて後はシカトかw
0705nobodyさん2010/07/06(火) 15:01:58ID:???
「CakePHPによるwebアプリケーション開発」
p..64で本のように表示できなくなりました。どなたかp62-64の
誤りを教えてください。スクリプトは付属CDのをそのままコピーしている
のですが・・・
0706nobodyさん2010/07/06(火) 15:03:52ID:???
p.60 p.58-60の誤りです。hello/sendformのページが表示されるところ
sendform画表示されてエラーになってしまいます>__<
0707nobodyさん2010/07/06(火) 15:06:25ID:???
>p..64で本のように表示できなくなりました。

どう表示されているかぐらい書こうや
0708nobodyさん2010/07/06(火) 15:11:06ID:???
>>704
質問の仕方を教えてやってるだろうが。
706もそうだが、聞きたいならどの情報に対して、何をしたらどういう状況になってるかくらい書け。


答えられるかは別問題だ。
0709nobodyさん2010/07/06(火) 15:18:17ID:???
Missing Controller
error: SendFormContoroller could nat be found.

です
http://localhost/cake/sample/hello/sendForm?text1=なんたら(UTFコンバートされた文字列)
というURLが表示されるところ
hello/
が欠けたURLが表示されてエラーになるのです。

index.ctp
で<form method="get" action="/sendform">
と送っているのですが、hello_contorollerのfunctionで sendformが定義されているのですが、
sendform_controllerがないとエラーがでています。・・・・
0710nobodyさん2010/07/06(火) 15:20:44ID:???
<form method="get" action="/sendform">
でした。解説はこのコードを前提に修正していく記述なので止まってます。
0711nobodyさん2010/07/06(火) 15:22:33ID:???
頭をお借りして申し訳ないです。何がおかしいのかまだ初歩なのでわからないです。・・・
0712nobodyさん2010/07/06(火) 15:26:23ID:???
×<form method="get" action="/sendform">

○<form method="get" action="/sendform">
0713nobodyさん2010/07/06(火) 15:27:06ID:???
途中で書き込んでしまった。
すまん
×<form method="get" action="/sendform">

○<form method="get" action="./sendform">

/sendformの前にドットを入れてみる。
0714nobodyさん2010/07/06(火) 15:27:36ID:???
>>709
action="/hello/sendfom" でどう?
0715nobodyさん2010/07/06(火) 15:28:37ID:???
○<form method="get" action="./sendForm">
です。たびたび申し訳ないです。
これをaction="./hello/sendForm">
にしてもだめなのです・・・
0716nobodyさん2010/07/06(火) 15:35:38ID:???
action="/hello/sendForm">

どっとなし。

これでもだめ??
0717nobodyさん2010/07/06(火) 15:36:27ID:???
>>715
勝手にふたつのレスを合わせるな
.sendForm
or
/hello/sendForm
でどうかと>>713>>714でそれぞれ言われている

そして、その場合、アクション名は sendForm() なんだろうね?
0718nobodyさん2010/07/06(火) 15:36:53ID:???
あ、またかぶったw
0719nobodyさん2010/07/06(火) 15:37:14ID:???
だめです同じエラーがでてしまいます。なぜURLが省略されてしまうのでしょうか?
0720nobodyさん2010/07/06(火) 15:37:47ID:???
>>717の前者はスラッシュ抜けてた ./sendForm
0721nobodyさん2010/07/06(火) 15:39:08ID:???
アクション名というか
HelloControllerで定義しているfunctionは
index()と sendForm() です。
0722nobodyさん2010/07/06(火) 15:39:21ID:???
>>719
debug( $this->webroot );
で、きちんとwebrootまでのパスがでるかい?
0723nobodyさん2010/07/06(火) 15:42:43ID:???
debug( $this->webroot );

をどんなファイル名にしてどこで表示させればいいのでしょうか?
0724nobodyさん2010/07/06(火) 15:45:53ID:???
>>723
どこでも良いけど index() の中とか
0725nobodyさん2010/07/06(火) 15:46:51ID:???
だめだこりゃ
こんなのほっとけ
0726nobodyさん2010/07/06(火) 15:47:09ID:???
indexのなかだとそのまま
debug( $this->webroot ); と表示されてしまいます>__<
0727nobodyさん2010/07/06(火) 15:54:51ID:???
>>726
うまくいかないなら「cakephp debug」でぐぐって、まず指示されたことが何かを理解しようとしなきゃ
0728nobodyさん2010/07/06(火) 15:56:38ID:???
PHPすらわかってないアホにどうしろと
ほっとけって
0729nobodyさん2010/07/06(火) 16:04:38ID:???
>>708
>>697の質問でソースの出所が必要とは思わないがな

んな堂々と「答えられるかは別問題だ」とか言われてもw
0730nobodyさん2010/07/06(火) 19:05:49ID:???
書籍で思い出したけどCakePHP 1.3によるWebアプリケーション開発って本が出てた
0731nobodyさん2010/07/06(火) 19:45:35ID:lebgmiXf
ビュー側でSTARTボタンにより、データをPOSTしてコントローラ側で受け取り
ビュー側でのタスクのインターバルを変更したいのですが
この場合、$_POST('a')で受け渡せるのですが、もっとスマートに渡せる方法は
あるでしょうか?
また、コントローラのアクション内で、変数を使用すると動作はするもののUndefined・・・
未定義警告が出てしまいます。そもそも変数はどの場所でどのように、定義したら
いいのでしょうか?
アクション内で、$_POST('a')を使用して未定義警告をださないにはどうしたらいいですか?
0732nobodyさん2010/07/06(火) 20:01:51ID:???
>>730
秀和のcake本の1.3対応版か
前回のはレビュー良かったけど、すぐ売り切れだか絶版になってて実物見たこと無いわ
0733nobodyさん2010/07/06(火) 22:56:11ID:???
今日本屋でその本みてきた
なかなか丁寧な解説でよさげ
0734nobodyさん2010/07/06(火) 23:32:09ID:???
生成されるキャッシュファイルの名前が変だなーと思ったら1.3は環境によっては
slug生成に問題出るみたいね

CakePHP 1.3のキャッシュやスラッグ(Inflector::slug)に要注意 - (DxD)∞
http://dxd8.com/archives/209/
0735nobodyさん2010/07/06(火) 23:53:22ID:???
1.3の$session->flash()にechoが必要で小一時間ハマった。
0736nobodyさん2010/07/07(水) 20:45:57ID:6d/8d4Je
>731
未定義警告ですが仕方ないので、issetで判定して処理して消しました。
0737nobodyさん2010/07/07(水) 21:18:42ID:???
CakePHPって新規開発にしか使えないよね。
何故なら改修の場合は大抵DBにまで手は入れないから。
0738nobodyさん2010/07/07(水) 21:58:43ID:???
何故ならはいいが理由になってなくね?
まあ改修案件でわざわざCakePHP使うとこはないだろうが。
0739nobodyさん2010/07/07(水) 22:33:30ID:???
てか何回コピペするつもりか知らんが
FW使ってないシステムに後からFW突っ込むことなんて
Cakeに限らずできないと思うが
0740nobodyさん2010/07/07(水) 22:42:44ID:???
単なる改修案件を、うまく丸め込んでリプレイスに持ち込めばこっちのもんよ
0741nobodyさん2010/07/07(水) 23:10:09ID:???
動きゃ何でもいいんだよ
0742nobodyさん2010/07/08(木) 01:27:22ID:jw2HbYMj
表示が重い(遅い)のって仕様ですかね?
1.3.2をダウンロードしまして、coreの設定だけを変えて
Viewに「Hello World」と表示する簡単なページを出力させたのですが、
読み込みに2,3秒かかります。

ローカルのWindowsXP・PHP5.2.5上でテストしているのですが、
何か早く処理させる方法ってあるのでしょうか?
0743nobodyさん2010/07/08(木) 01:43:46ID:???
お客様の中にエスパーはいらっしゃいませんか?
0744nobodyさん2010/07/08(木) 01:46:33ID:???
俺の念動力はどうやら出番無しのようだな
0745nobodyさん2010/07/08(木) 02:11:53ID:???
あるよ
ローカル以外で実行
0746nobodyさん2010/07/08(木) 02:27:04ID:jw2HbYMj
う〜ん、一般的に外部サーバよりもローカルの方が速いと思うのですが。
ネットワークの問題じゃなくて、Cakeの問題だと思うんです。

あと、最低限の開発環境とやった事を記載しているので、
エスパーじゃないと答えられないという事もない気が・・・
0747nobodyさん2010/07/08(木) 02:43:02ID:???
>>746
志村、キャッシュキャッシュ!
0748nobodyさん2010/07/08(木) 02:49:19ID:???
>>742
普通は単純なページ表示に2,3秒もかからん
ボトルネックはどこなのか自分で特定するんだ
0749nobodyさん2010/07/08(木) 02:50:50ID:???
ローカルの方が遅いよ
0750nobodyさん2010/07/08(木) 02:53:55ID:???
WindowsXP・PHP5.2.5

全然足りないだろ
CPU、バストサイズ、メモリくらいまでは書け
0751nobodyさん2010/07/08(木) 02:56:36ID:jw2HbYMj
>>748
ですよね・・。
本当にファイル解凍してcore.phpのSecurity.salt変更して
単純なページ表示しただけなんです。
自作のフレームワークやPEARでこういう事がなかったので
CakePHPの問題だと思っています。

とりあえず、良くある問題じゃないみたいなので、自分で解決します。

>>749
ネットに繋げる必要ないのにですか?それは信じがたいですね。
0752nobodyさん2010/07/08(木) 02:58:34ID:jw2HbYMj
>>750
CPUやCore 2DUOで2GBのローカルサーバです。

というか、サーバスペックが数年前だとしても
Hello Woldという1行テキスト表示だけで、2,3秒はあり得ないと思うんですよね・・。
ネタ扱いされているという事は、皆さんの環境ではそうでもないと言う事かな。
0753nobodyさん2010/07/08(木) 03:07:17ID:???
てか普通にそんな遅かったとして
そこらで使われるわけねーだろ
0754nobodyさん2010/07/08(木) 03:08:08ID:???
なんども読み込んでもその秒数?
とりあえずDebugKit入れてどこで時間食ってるか計測してみな

あとConfigure::writeのdebugを0にしてやってみると速くなったかも

おれの開発環境WinXP+Xamppでも2〜3秒は普通にあるよ。
HelloWorldはさすがにそんなにかからないと思うけど。
0755nobodyさん2010/07/08(木) 03:09:56ID:jw2HbYMj
>>754
わかりました。

あと、さくらのサーバに入れたら違和感なく表示されました。
ですので、サーバの問題だと思います。
CakePHPの問題じゃないと言う事は、自分が間違っていました。すみませんでした。
0756nobodyさん2010/07/08(木) 08:13:32ID:???
xamppで実行すると断然遅いのはお約束
0757nobodyさん2010/07/08(木) 10:08:41ID:???
だからローカルだと遅いといったろが!このやろう!!
0758nobodyさん2010/07/08(木) 10:16:08ID:???
Linux上だと普通
0759nobodyさん2010/07/08(木) 10:25:56ID:???
だからCakeが遅いんじゃないっていったろがこのやろー
0760nobodyさん2010/07/08(木) 10:30:37ID:???
Windowsで開発すなw
0761nobodyさん2010/07/08(木) 10:55:14ID:???
ローカルサーバで1.2が重いのはなぜ?
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1592&forum=3&viewmode=flat&order=DESC&start=10
0762nobodyさん2010/07/08(木) 10:55:40ID:???
モデルのテストケース書くときって、バリデーションのテストケースまで書いてる?
バリデーションの組み合わせをテストするだけで結構な量のテストになるのだけど

どこまでテストするべきか、それともバリデーションのテストは不要か悩む
0763nobodyさん2010/07/08(木) 14:26:52ID:???
session関連で、ブラウザがchromeの時だけ発生している現象で困っています。

$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
$data['2']['1'] = 'A';
$data['3']['2'] = 'B';
といった配列を
$this->Session->write('data',$data);
で保存し、
次のページで
$data = $this->Session->read('data');
とやったあとで$dataを確認すると、

$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
だけになっているのです。

$data['2']['1'] = 'A';
$data['3']['2'] = 'B';
がロストしています。

chromeでセッションIDの受け渡しにクッキーを使っているときだけ発生します。
IEでは問題ありません。
セッションIDをURL埋め込みにすると、問題なく動作するようです。
でも可能な限り埋め込みは使いたくないのです。

何かご存じの方、ご意見いただきたいです。
よろしくおねがいします。
0764nobodyさん2010/07/08(木) 14:31:31ID:???
>763
どういう条件で抜け落ちるのかわららん
$data['1']['3'] = 'C';
とか
$data['1']['3'] = 'A';
を追加してみるとか
$data['1']['1'] = 'A';
$data['1']['2'] = 'B';
$data['2']['1'] = 'C';
$data['3']['2'] = 'D';
だとどうなのかとか
0765nobodyさん2010/07/08(木) 15:20:14ID:???
条件がさっぱりわからんのです。
おっしゃるような追加もいろいろやってみたのですが
法則がつかめません。
0766nobodyさん2010/07/08(木) 15:45:02ID:???
今気がついたのですが、
セッションを保存しているファイルを監視していまして、
sess_****
というファイルが
IEの場合は、二つ作られるのに対して、
chromeだと三つ作られています。
その三つ目のセッションファイルの中身がすでにデータ抜け落ちているようで、
そちらを優先してreadしているみたいです。
二つ目だとデータが保持されています。
0767nobodyさん2010/07/08(木) 16:17:09ID:???
外部ファイル読み込んでるけど、そのファイルがないからCakeが起動してて、そこでセッション発行してるとか
そんな感じの何かを感じた
0768nobodyさん2010/07/08(木) 16:23:14ID:???
なるほど、外部ファイルですか。
ソースを確認してみます。
0769nobodyさん2010/07/08(木) 22:52:18ID:???
>>739
トンチンカンなこと言ってるなよ。
改修案件・リプレイス案件で使えないようなFWなんて
使い物にならんね。
0770nobodyさん2010/07/08(木) 23:05:23ID:???
>>769
CAKEがつかえねーと思うなら他にもいっぱい良いフレームワークがあるのだから、そっちに行けばいい
0771nobodyさん2010/07/08(木) 23:14:17ID:???
だよな
少なくともRailsとかCakeみたいに規約で縛るタイプのフレームワークは
既存のシステムに合わせるのは向いてないんだから
それに向いてるフレームワークを使えばいいだけだ
0772nobodyさん2010/07/09(金) 08:32:46ID:???
あえて釣られてみるが・・・
>改修案件・リプレイス案件で使えない
なぜそう思う?
0773nobodyさん2010/07/09(金) 09:00:53ID:???
DB構成が特殊な案件なんだろ
命名規則が面倒とか
0774nobodyさん2010/07/09(金) 11:58:55ID:???
俺みたいな優柔不断の場合、
Cakeのようにガチガチに縛った仕様の方が
使いやすい時がある。
0775nobodyさん2010/07/09(金) 12:08:30ID:???
いま、そういう話ししてるんじゃないよね?
0776nobodyさん2010/07/09(金) 12:41:48ID:???
だよね
0777nobodyさん2010/07/09(金) 12:43:01ID:???
亀甲縛りに見えて発情したじゃねーか
0778nobodyさん2010/07/09(金) 12:49:05ID:???
ガチムチだろそれ言うなら
0779nobodyさん2010/07/09(金) 13:38:36ID:???
よくフレームワーク使う理由に「他人もわかるようにするため」
みたいな理由聞くけど、フレームワークだからって簡単に分かるか?
やっぱり、個々の作り方に依存すると思うんだよな。
0780nobodyさん2010/07/09(金) 13:42:55ID:???
だよね。
0781nobodyさん2010/07/09(金) 14:01:50ID:???
Cakeは配列だらけなのがうざい

完全OOPでCake並に使いやすいFWがほしいな
0782nobodyさん2010/07/09(金) 14:09:55ID:???
>>779
依存するような作り方はしないように努めるもんだ
何使っても自分のことしか考えられなければ同じこと
0783nobodyさん2010/07/09(金) 14:13:15ID:???
Akelosまじオススメ!Cakeのような出来損ないのFWとは違うぜ?
0784nobodyさん2010/07/09(金) 14:19:35ID:???
>>782
それはそうなんだが、そう言いだしたらどの書き方でも一緒だよな?
それこそ自作フレームワークでも、コメントちゃんと書いてれば。
0785nobodyさん2010/07/09(金) 14:26:13ID:???
>>784
自作でも国際的に主流になってる書き方を心がければ同じだろうな
そうした仕組みを共有しやすくしているのがFrameWorkだろ
0786nobodyさん2010/07/09(金) 15:01:55ID:???
ほう Akelos
ぱっと見はCakeに似ているようだが

もうちょっと調べてみる
0787nobodyさん2010/07/09(金) 15:25:51ID:???
よくある主流になれなかったFWだね。

FWは中身でなく、普及率が鍵。
0788nobodyさん2010/07/09(金) 15:45:48ID:???
よさそうだけど普及率いまいちだね

開発スピードも遅いみたいだし

ただ、Cakeの配列だけはどうにかならんのか

Cake2まだー?
0789nobodyさん2010/07/09(金) 15:52:57ID:???
Lithiumは?
0790nobodyさん2010/07/09(金) 15:57:14ID:???
1.2から1.3を躊躇してるんだけど移ったほうがいいかな?
ここはスルーしてCake2なりリチウムなり待ったほうがいいかな?
みんなどんな感じなの?
0791nobodyさん2010/07/09(金) 16:15:30ID:???
>>790
俺なら1.3もイジるし、リチウムもいじる。
自分で触んなきゃ何もわからんから。

2chは参考程度じゃね。
0792nobodyさん2010/07/09(金) 16:18:53ID:???
Yiiとかはどう?

設置しやすそうだし、現状ではよさげなんだが
0793nobodyさん2010/07/09(金) 17:08:50ID:???
移行するって簡単なようで難しいよな。

俺も自作FWからCake1.3に移行しているけど、
手癖がある分、以降が困難だ。
しかも、自分で作ったコードを誰かと共有して使うかって言ったら
その可能性はかなり低いだろうし。自作でもいい気がしてくる
0794nobodyさん2010/07/09(金) 18:04:28ID:???
Cake2は配列残るべ?
0795nobodyさん2010/07/09(金) 18:10:41ID:???
残るけどfindの戻り値はオブジェクトになるとか
0796nobodyさん2010/07/09(金) 18:12:42ID:???
>>792
sqlite使えるのは便利
0797nobodyさん2010/07/09(金) 18:20:59ID:???
Yiiは予約語少ないのがいいね

ただ流行るかは未知数
個人的には流行って欲しい

CakePHPは便利ちゃあ便利なんだが
CMS界のWPのような存在になったらそれはそれで困る
0798nobodyさん2010/07/09(金) 18:21:55ID:???
>>795
中途半端にオブジェクトにされてもな
引数について言及されてないってことは、引数は配列のままなんでしょ?
0799nobodyさん2010/07/09(金) 18:24:34ID:???
>>797
>CMS界のWPのような存在になったらそれはそれで困る
なぜに?
0800nobodyさん2010/07/09(金) 18:28:05ID:???
>>798

たぶん、そのままなんだろうねえ…


>>799

外見はいいけど中身が中途半端&時代遅れ
CMSはまだいいが、FWで中身が中途半端&時代遅れだとかえって使いにくい
0801nobodyさん2010/07/09(金) 18:34:55ID:???
CakePHPは予約語が多すぎたりでメソッド名ださくなるしな
そうはいってもライブラリも多いから使ってるんだけどなw
0802nobodyさん2010/07/09(金) 18:52:56ID:???
yiiムズいな
0803nobodyさん2010/07/09(金) 19:53:49ID:???
確かにWordpressは時代後れだよな

でも、使う側(プログラミングしない人)から見ると
動くし、プラグイン一杯あるから使うんだろうな
0804nobodyさん2010/07/09(金) 20:13:50ID:???
WordPressに変わる便利で流行るCMS公開したらいいよ
0805nobodyさん2010/07/09(金) 21:38:34ID:???
WPって時代遅れなのか?
MTが時代遅れって言うのならわかるけど、CMSとしてはともかくブログシステムとしてWPは
最高峰だと思っていたんだが…
そんな俺が時代遅れなんだろうか
0806nobodyさん2010/07/09(金) 21:44:10ID:???
Wordpressはいまや世界一のブログシステムだよ。
Movabletypeからかなりの人が乗り換えてる。

最新版は、複数のブログを単一のシステムで構築できるようになったから
ますます普及するんじゃないかな。
0807nobodyさん2010/07/09(金) 22:26:54ID:???
言語と同じだよ
用途で使い分ければいいだけ
0808nobodyさん2010/07/09(金) 23:05:12ID:???
用途かぶってるだろ?
0809nobodyさん2010/07/09(金) 23:50:34ID:???
でも、ソースはとてもMVCとは言えなく無いか?
0810nobodyさん2010/07/10(土) 00:00:14ID:???
誰もMVCなんて言ってない気もするが
0811nobodyさん2010/07/10(土) 00:12:04ID:???
MVCって言葉を覚えたてなんだろうな
0812nobodyさん2010/07/10(土) 00:23:55ID:???
ごめん。フレームワークの事だった・・・

てか、MVC覚え立てならCakeのスレ来ないだろ
0813nobodyさん2010/07/10(土) 00:35:25ID:???
んじゃそれぞれのスレでやるってことで
0814nobodyさん2010/07/10(土) 00:42:04ID:???
>ごめん。フレームワークの事だった・・・
これでも意味わかめ
0815nobodyさん2010/07/10(土) 00:42:42ID:???
フレームワークって言葉を覚えたてなんだろうな
0816名無しさん@そうだ選挙に行こう2010/07/10(土) 11:29:58ID:???
paginationのカスタムで挫折した・・・

モデルに関数作って上書きするってところまではわかるが、
独自SQLを反映させられない・・・難しすぎ
0817名無しさん@そうだ選挙に行こう2010/07/10(土) 16:04:52ID:???
cakephpのpaginate使いにくいよな

どうして
$this->Model->paginate()
って使い方にしなかったのか理解に苦しむ
0818名無しさん@そうだ選挙に行こう2010/07/10(土) 16:37:18ID:v/ICs0IK
書籍 CakePHPによる実践アプリケーション開発で勉強しています。
P82-84 バリデーションルールの追加で
var $validate = array(
'from' => array(
'date_format' => array('rule' => array('datetime'), 'required' => true),
'compare_from_to'=> array('rule' => array('compareFromTo')),
'not_duplicate_schedule' => array('rule' => array('isDuplicate'))
中省略
function isDuplicate($value) {
$from = $this->data[$this->name]['from'];
$to = $this->data[$this->name]['to'];
$conditions = array('or' => array(
array("from BETWEEN ? AND ?" => array($from, $to)),
array("to BETWEEN ? AND ?" => array($from, $to))
));
if($this->id) {
$conditions[$this->alias . '.' . $this->primaryKey] = '!= '.$this->id;
}
$count = $this->find('count', compact('conditions'));
return $count == 0;
}

この中の $conditions[$this->alias . '.' . $this->primaryKey] = '!= '.$this->id; で
aliasとは何が入るのでしょう? 漠然と同レコードのIDを排除して比較してるような
気はしますが、$condtionsの2番目配列には何がはいるのでしょうか?


0819名無しさん@そうだ選挙に行こう2010/07/10(土) 17:23:31ID:???
>>818
見た感じ$this->aliasはisDuplicateの呼び出し元のモデル名が入るんじゃね?
0820名無しさん@そうだ選挙に行こう2010/07/10(土) 22:13:41ID:oMY+XuqK
クックパッド
http://blog.kushii.net/archives/1350951.html
http://www.red-mount.com/blogs/show/ruby_on_rails_cookpad

ついに月次訪問者でツイッターがmixiを抜いた!
さらにツイート数で米国を逆転か?:in the looop:ITmedia オルタナティブ・ブログ
http://blogs.itmedia.co.jp/saito/2010/06/post-4bfd.html
http://techwave.jp/archives/51473193.html
http://techwave.jp/archives/51476110.html

Twitter検索急増中【ループス斉藤徹】 : TechWave 
http://techwave.jp/archives/51475780.html
Twitter共同創業者のBiz Stone氏は,
Twitterの一日あたりの検索回数が8億回に達したとコメントした。

ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
http://www.atmarkit.co.jp/news/200711/16/twitter.html

リクルート メディアテクノロジーラボ
「Railsサイト安定運用の心構え 〜8つのサービスから学ぶ」
http://b.hatena.ne.jp/entry/www.nicovideo.jp/watch/sm8258661
http://gihyo.jp/news/report/01/rubykaigi2009/0002?page=4

今では、ビッダーズについては、バックエンドはもうRailsでサクっと作っていこうという方向になっています。
広告のシステムもどんどん改善して、フェーズ3や4をやっていますし、それ以外の部分もRailsで書き直しています。
Rubyはシンプルに作れるし、自動テストが作りやすいのも良いですね。
http://www.dena.jp/recruit/sp/engineer/interview/hanabe.html
0821名無しさん@そうだ選挙に行こう2010/07/11(日) 11:20:41ID:???
で、それとCakePHPとなんの関係があるの?
0822名無しさん@そうだ選挙に行こう2010/07/11(日) 12:07:43ID:???
githubとかで参考になるプロジェクトってある?
1.2で。
0823nobodyさん2010/07/12(月) 17:41:22ID:???
みなさん、CakePHPを仕事で使ってるんですか?
0824nobodyさん2010/07/12(月) 17:50:23ID:???
そうですがなにか
0825nobodyさん2010/07/12(月) 18:06:31ID:???
羽田のサイトはcakePHPでできてるぞ
0826nobodyさん2010/07/12(月) 18:10:20ID:???
誰だよ
0827nobodyさん2010/07/12(月) 18:20:47ID:???
俺だよ俺
0828nobodyさん2010/07/13(火) 00:18:32ID:???
query() 使うとテーブル名がキーにセットされるじゃないですか。
テーブル名に別名(Hogeとか)付ければいいのだけど、From句にサブクエリを使った場合はこの別名すら読んでくれなくないですか?
0829nobodyさん2010/07/13(火) 11:50:34ID:mYlx8y+I
elements のなかで親ビューで設定した変数を使う方法を教えてください ループの中身をインクルードしたいです
0830nobodyさん2010/07/13(火) 11:54:08ID:???
引数で渡せる。

マニュアルにもあるよん。
http://book.cakephp.org/ja/view/97/Elements
0831nobodyさん2010/07/13(火) 12:03:54ID:???
マニュアルも読まないで人に聞くな
チュートリアルもこなさないで人に聞くな
アホばっかり
0832nobodyさん2010/07/13(火) 12:53:53ID:???
GROUP BYを指定するには、1 = 1 GROUP BY xxx って指定する以外に方法ありますか?
0833nobodyさん2010/07/13(火) 13:38:34ID:???
バージョンは?
マニュアルに書いてあるっしょ
optionsにarray(group=>*)
0834nobodyさん2010/07/13(火) 14:02:30ID:???
マニュアルで探すと時間かかるじゃん?
0835nobodyさん2010/07/13(火) 14:12:21ID:???
そうでもないよ
ってか釣り堀はここじゃない
08368322010/07/13(火) 14:13:28ID:???
>>833
ありがとう。
あれ?もしかして、1.2以降はgroupが使えるようになっているのか…。
1.1で、使えなかったから標準ではサポートされていないのかと思いました。
すいません。
0837nobodyさん2010/07/13(火) 14:13:37ID:???
ここで聞く方が誰かが答えるまで時間がかかるし、そもそも答えが返ってこない可能性もあるのに
0838nobodyさん2010/07/13(火) 14:54:11ID:???
マニュアルは分かりづらいよ。
PHPのマニュアルほど、整理されてないし。
0839nobodyさん2010/07/13(火) 15:01:43ID:???
>>838
PHPのマニュアルほどって
無茶言うなw
0840nobodyさん2010/07/13(火) 15:11:04ID:???
まにゅあると
http://api.cakephp.org/classes
ここ読めば大抵分かるなんならそのままリンクされたソース読めばいい。
0841nobodyさん2010/07/13(火) 17:42:59ID:???
findとかpaginationとかFormヘルパーとか
似たような物作って自家製フレームワーク作ってるんだけどやたら難しい。

CakePHPからWebサイトに必要な機能を省いた
軽量版が欲しかったんだが、素直にCakePHP使った方が良いのかな・・・
0842nobodyさん2010/07/13(火) 17:54:53ID:???
CakePHPが重くて困る場面でなきゃ
既存のものを使わない理由はないな
0843nobodyさん2010/07/13(火) 18:03:14ID:???
既存のはpaninationの使い方がどうも難しいんだよな・・・。
あと、配列書きまくらないと設定できないというのも。

重くて困るという事はないが、xdebugした時のログを見ると
無駄な部分も多いんじゃないかなって思うんだよな。
0844 [―{}@{}@{}-] nobodyさん2010/07/13(火) 18:04:18ID:???
オレオレフレームワークほど無駄なものはない
0845 [―{}@{}@{}-] nobodyさん2010/07/13(火) 18:05:54ID:???
どうしてもなら自家製paginationとして
ヘルパーやらコンポーネントやらを作ればいい。

オレオレフレームワークほど犬も喰わんものはない
0846nobodyさん2010/07/13(火) 18:29:41ID:???
オレオレフレームワークって言っても、俺が使うからなw

バリデーションの処理(モデルとの連携)が難しいんだが
ま、限界を感じたら845の言うようにするよ。
0847nobodyさん2010/07/14(水) 00:26:44ID:sCETZCgF
database.phpのデータベース接続情報を
コントローラーから参照するのって、どうすればいいのでしょうか?
staticじゃないから、DATABASE_CONFIG::$default
では駄目ですし・・。
0848nobodyさん2010/07/14(水) 15:50:04ID:???
>>847
ConnectionManager::getDataSource($this->(モデル名)->useDbConfig)
じゃだめ??
0849nobodyさん2010/07/14(水) 16:50:30ID:sCETZCgF
>>848
駄目です・・。「Class 'ConnectionManager' not found」
というようにクラスがないと出ます。

ソースはTestControllerのindex内に
$config = ConnectionManager::getDataSource($this->Test->useDbConfig);
print_r($config);

としただけなんですが・・・。バージョンは1.3.2です。
0850nobodyさん2010/07/14(水) 17:13:41ID:???
クラス読みこめば?
0851nobodyさん2010/07/14(水) 17:30:31ID:sCETZCgF
$obj = new DATABASE_CONFIG();
$config = $obj->default;

としたらいけました。この方法しかないんですかね?
0852nobodyさん2010/07/14(水) 17:55:33ID:???
スレチ失礼。ATNDより、PHP関連の勉強会を紹介します。


■Ktai Library for cakephp 勉強会@関東
URL: http://atnd.org/events/6209
日時: 2010/07/17 11:00 to 15:00
場所: マイ・スペース&ビジネスブース池袋西武横店
参加条件: Masa-Pさんの本「PHPで作る携帯サイト デベロッパーズガイド」を持参、かつ4章までを自力である程度実装できている、もしくは出来る方


■OpenPNE3で学ぶsymfony勉強会
URL: http://atnd.org/events/6255
日時: 2010/07/24 15:00 to 17:00
場所: 手嶋屋新宿御苑オフィス
内容: この勉強会は毎回OpenPNE3の各機能、仕様にフォーカスを当て、ベースフレームワークであるsymfonyを理解していく勉強会です。
参加者はみんなsymfonyに興味のあるプログラマです。Webエンジニアとのネットワークづくりにもお役立てください。


■Python4PHPer 第7回講習会
URL: http://atnd.org/events/6344
日時: 2010/08/12 10:00 to 22:00
場所: 国立オリンピック記念青少年総合センター
内容: Python未経験者向けの、PythonとGoogle App Engine (GAE) の入門講座です。


■第11回 LOCAL PHP部勉強会
URL: http://atnd.org/events/6443
日時: 2010/08/28 14:00 to 16:30
場所: 札幌市産業振興センター セミナールーム9
0853nobodyさん2010/07/14(水) 18:16:15ID:???
おいしね↑
0854nobodyさん2010/07/14(水) 20:15:32ID:???
生きる!
0855nobodyさん2010/07/14(水) 21:08:17ID:???
原西来てるな
0856nobodyさん2010/07/16(金) 11:44:19ID:iQAofRLh
コントローラー側でページネーションを操作する方法って無いでしょうか?
$paginator->counterやソートの内容をコントローラーで処理して
setでビューに渡せるようにしたいと思っています。

コントローラーで「$helpers = array('Paginator');」としても
$paginatorの内容が取得できませんでした。
0857nobodyさん2010/07/16(金) 12:34:00ID:???
>>856
操作ってどんなの?
普通にpaginator使っていればコントローラ側で意識しなくても渡るけど。
もしくは、paginatorを継承して付け加えれば?
0858nobodyさん2010/07/16(金) 13:43:53ID:iQAofRLh
>>857
例えば「次へのリンクがある場合」という条件を書く時、
if ($paginator->last() != "") {
echo $paginator->next('次へ');
}

という感じのソースになりますが、
このIFの部分を含めてコントローラーで変数に置きかえ、ビューに渡したいんです。

0859nobodyさん2010/07/16(金) 13:51:53ID:???
shell上でコンポーネントを使うにはどうすればいいでしょうか?
0860nobodyさん2010/07/16(金) 14:07:46ID:???
使い方はたぶんこれでOKなのを見つけたんですが

App::import('Component','コンポーネント');
$this->コンポーネント = new コンポーネントComponent();

こんなエラーがでちゃいます

PHP Fatal error: Class 'App' not found

Appが無いって事でしょうか
ちなみに上記コンポーネントを使おうとしなければエラーはでません
cake1.2です
0861nobodyさん2010/07/16(金) 14:20:46ID:???
エラーのまんまだけどAppがまだ読まれてないところで使ってるんじゃない?
どこにそれ書いたの
0862nobodyさん2010/07/17(土) 21:54:27ID:???
ところでCakePHPって新規の案件以外では使えないよね。
0863nobodyさん2010/07/17(土) 23:07:39ID:???
デジャブやめろw
0864nobodyさん2010/07/17(土) 23:21:16ID:???
そんなネタはおもしろくない
0865nobodyさん2010/07/17(土) 23:44:34ID:???
面白いとか面白くないとかじゃなくて
事実を突きつけてる。OK?
0866nobodyさん2010/07/17(土) 23:53:45ID:???
じゃ、事実として意見を言うけど、確かに使いづらいよ。
特にMVCに分かれていない更新案件なら、手間がかかるだけ。

でも、それ(新規案件だけで使う)が何か問題あるのか?
0867nobodyさん2010/07/17(土) 23:59:17ID:???
まぁCakePHP使いこなせてないだけだろうね(笑)
0868nobodyさん2010/07/18(日) 00:13:00ID:???
いや、そうじゃなくて、更新案件なら
今まで作っていた作り方があるのに
わざわざCakePHPを使う必要があるのか?ってこと。

お前は、自分が管理しやすいからって
一から作り直すのをクライアントに勧めるのか?
0869nobodyさん2010/07/18(日) 00:37:30ID:???
最終的に何を言いたいのかわからんけど
フレームワークってそういうもんだろ
PEARとか拾ってきたクラスとかってのは既存のシステムからそれを利用するコードを書くわけだけど
フレームワークって逆にフレームワークから呼び出されるコードを書くのがデベロッパの仕事なわけで
当然フレームワークに沿った描き方する必要があるに決まってる
0870nobodyさん2010/07/18(日) 00:42:14ID:???
何回ループするんだよw
0871nobodyさん2010/07/18(日) 00:48:42ID:???
最近だけで3回くらいデジャブな感じ
0872nobodyさん2010/07/18(日) 01:15:44ID:???
cakephpでsymfonyにあたるsfFormのsetNameFormatってどうやったらいいの?
0873nobodyさん2010/07/18(日) 10:06:05ID:???
>>869
だから新規の案件意外で使えなくても不思議じゃないのに、
わざわざ聞くなってこと。言わせんな恥ずかしい。
0874nobodyさん2010/07/18(日) 11:11:01ID:???
>>87
「案件意外」

たしかに恥ずかしいな
0875nobodyさん2010/07/18(日) 12:35:49ID:???
VB.netが出たときも、結局書き直しじゃねぇかって話が出てた
さすがWeb界のVB
0876nobodyさん2010/07/18(日) 17:06:13ID:???
>>874
横だけど、2ちゃんで誤字突っ込むやつ久々に見た
0877nobodyさん2010/07/18(日) 18:46:00ID:???
男で突っ込まれるのが好きな奴なんているのか
0878nobodyさん2010/07/18(日) 22:09:37ID:4SBJVnBL
商品テーブル(items)と在庫テーブル(stocks)というのがあって、
商品テーブルにデータが追加されたら、在庫テーブルに商品IDが入る

と言う仕組みを作っているのですが、
ItemモデルでhasOneで結合するだけでは追加されません。
Itemコントローラーで$this->Item->saveAllした後に
$this->Stock->saveAllをするというように、分けないと登録出来ないのでしょうか?
0879nobodyさん2010/07/18(日) 23:55:18ID:???
RoRも込みでの話しになるけど
新規でしか使えないフレームワークなんて何の意味があるのかね?
RoR系のフレームワークってDBのテーブル名やPKは必ずIDにしなくちゃいけないとか
規約があるんだろ?
そんなもの使っかえねーし、きめぇ事この上無いんだが
なんでお前らこんな糞みたいなの使ってんの?
0880nobodyさん2010/07/19(月) 00:08:28ID:???
そうじゃないフレームワークはどれ?
フレームワークを理解してる?
0881nobodyさん2010/07/19(月) 00:38:08ID:???
>なんでお前らこんな糞みたいなの使ってんの?
使っている人が多いから

それ以上の理由ってあるか?
0882nobodyさん2010/07/19(月) 00:49:59ID:???
primaryKeyもtable名も変えれるけどね。
規約に沿ってないなら指定すればいいだけ。
0883nobodyさん2010/07/19(月) 01:18:10ID:???
>878
CookBook3.7.4あたりをもう一度読み直してみて
08848782010/07/19(月) 01:48:08ID:???
>>883
読み直しました。

やはり、一旦saveしてそこからgetLastInsertIdで追加したIDを取得して
もう一度saveするやり方しかないみたいですね。
考えたら、素のDB処理もそうするし、同じ事ですね。勉強になりました。
0885nobodyさん2010/07/19(月) 01:49:00ID:???
糞って言いたいだけだろ
0886nobodyさん2010/07/19(月) 02:27:27ID:???
Cookbookすらまともに読んでないようなやつは
できないということにしといてもいいんじゃね?w

とりあえず、できるしCookbookにもろに書いてるがな
0887nobodyさん2010/07/19(月) 03:20:44ID:???
次の患者どうぞ
0888nobodyさん2010/07/19(月) 09:27:45ID:???
>>879
新規案件だからだろ
他のがいいときは他の奴つかうし
フレームワークに振り回されてんじゃねーよ
0889nobodyさん2010/07/19(月) 10:37:02ID:???
>>884
そんなことない
適切なデータを渡せばsaveAllでいける
0890nobodyさん2010/07/19(月) 12:19:44ID:???
>>884
ちゃんとモデルごとに分けて配列に入れてからsaveAllしてる?
そもそもちゃんとモデルが関連づけされてる?取り出すときは一緒に出てくる?
怪しいところはその辺かなあ
0891nobodyさん2010/07/19(月) 12:33:23ID:???
>884
ttp://book.cakephp.org/ja/view/84/Saving-Related-Model-Data-hasOne-hasMany-belongsTo
100回読み直してみて
0892nobodyさん2010/07/19(月) 13:12:19ID:???
CakePHP 1.3.3 rainbow icing edition released
08938782010/07/19(月) 13:44:01ID:???
>>890
884で書いた事って、891のURLで書いている事と同じ事ではないでしょうか?
891のURLでも分けてsaveしてますよね。

ちゃんとモデル毎に分けて配列に入れてますし、
paginateする時も一緒に読み込んでますよ。
0894nobodyさん2010/07/19(月) 13:48:04ID:???
すげーなお前
0895nobodyさん2010/07/19(月) 14:44:13ID:???
>>893
ヒント>>890>>891は別人
0896nobodyさん2010/07/19(月) 14:48:41ID:???
MediaPluginの使い方が難しすぎる・・・
素直に適当なコンポーネント作成してアップロードさせた方が良いな
0897nobodyさん2010/07/19(月) 15:09:05ID:???
>>895
え?書いてあるよ
0898nobodyさん2010/07/19(月) 15:14:59ID:???
>>896
ソース読めばそうでもない。
0899nobodyさん2010/07/19(月) 15:40:08ID:???
>>897
ほんとだ。書いてあったw
ってことは結局>>889
>>878は腹に落ちるまで何度も読めばいいのに
0900nobodyさん2010/07/19(月) 18:01:14ID:???
>>882
知ってるよ。
でも設定より規約を重視するフレームワークでは
推奨される行為ではないんだろ?
DBにも制約があるなんて屑加減にも程がある。
0901nobodyさん2010/07/19(月) 18:10:10ID:???
フレームワークをなんだと思ってるんだろうか
0902nobodyさん2010/07/19(月) 18:10:33ID:???
主流のFWの規約=その時代の標準的なコーディング規約

と思っても良いと思うぞ。
それから大きく離れているコードを書く人は、おれおれFWを作りやすい人なんだろうな。
0903nobodyさん2010/07/19(月) 19:17:48ID:???
規約を守らないで使うぐらいだったら、オレオレライブラリとかpearとか使ってやった方が
その後は幸せになれるとおもうよ。規約があるから楽になるんだから。
0904nobodyさん2010/07/19(月) 19:31:31ID:???
複数人で開発する場合は規約があったほうがいい。
0905nobodyさん2010/07/19(月) 20:12:55ID:???
おまえら釣られすぎww
0906nobodyさん2010/07/19(月) 21:49:21ID:???
>規約があるから楽になるんだから。

これ、ほんとそうだな。
俺みたいに優柔不断で仕様作るのに時間かかる人間からしたら
規約が決まっている方が作りやすい。
0907nobodyさん2010/07/20(火) 00:03:25ID:Al1F2MMr
cookbookの投稿記事の編集を見たのですが、
http://book.cakephp.org/ja/view/340/Editing-Posts

function edit($id = null) {
$this->Post->id = $id;


と言うふうに書かれていますけど、関数の$idって
どこから参照されるのでしょうか?

URLが /(コントローラー名)/edit/id:10
であれば、edit関数内で$id=10として代入されるかと思ったのですが、
代入されていませんでした。
0908nobodyさん2010/07/20(火) 00:45:09ID:???
/edit/10
09099072010/07/20(火) 01:14:21ID:???
>>908
出来ました。URLの意味が
/コントローラー名/アクション/ID

だったんですね。id:10とかパラメーターが付いたら直で渡せないと。
その場合は、$this->params["named"]で取るようにします。
0910nobodyさん2010/07/20(火) 01:22:58ID:???
なにがしたいのかしらんがよくわからない方向に向かおうとしてる気がする
0911nobodyさん2010/07/20(火) 01:36:41ID:???
DBの命名に縛りが出ることにすげー違和感を覚えるんだが。
君達はそんなことないのか?
「楽だから」という理由だけでそれに納得してるのか。
単純な脳みそしてんだなー。
0912nobodyさん2010/07/20(火) 01:43:24ID:???
まあそこのページ、英語と日本語でちょっと違ってて
英語版を試すとおかしなことになるんだよね。
1.3用の英語ページが一番正しい。はず。
0913nobodyさん2010/07/20(火) 01:51:17ID:???
>>911
使ったことあればわかると思うけど別に縛りなんて無いよ。ただ初期値があるだけだ。
好きな名前使えばいい。
0914nobodyさん2010/07/20(火) 02:08:39ID:???
サッカーはどうして手を使ったらダメなんだ?って考える人ってめんどくさいだろ?
ボール蹴って「そういうもんだ」と思って楽しんだほうが楽なのと一緒だ。
0915nobodyさん2010/07/20(火) 03:27:06ID:???
ここ数日CakePHPを使えないものとしたくてたまらない奴が一匹いるようだな
0916nobodyさん2010/07/20(火) 03:28:46ID:???
Smartyスレに来るやつと同一人物だな
0917nobodyさん2010/07/20(火) 03:40:37ID:???
つうか、使わなきゃいいんだってw
規約に合わせたくない、合わせるのが諸処の事情で難しい、
そういう現場にまで押しつけようとは
CakePHPコミュニティも、俺らもしてないじゃないの
0918nobodyさん2010/07/20(火) 04:20:04ID:???
たぶん、会社の上司かクライアントか誰かに言われたんでしょ。
「フレームワーク勉強しろ」って。
そんで、必死に勉強しない理由探して叩いてるだけでしょ。
0919nobodyさん2010/07/20(火) 07:51:24ID:???
>>911
DB名を規則通りにすると1〜2行程度、楽ができるとかレベルだから
好きにつければいいよ。一通り、規約によるメリットを調べてから
従うもの、無視するもの選べばいいよ。
0920nobodyさん2010/07/20(火) 08:41:24ID:???
そんなに日本語カラム名が使いたいのか
0921nobodyさん2010/07/20(火) 16:17:54ID:???
サニタイズって使う?
HTML許可するフォーム以外、使い道が思い浮かばない。
0922nobodyさん2010/07/20(火) 17:21:06ID:???
データを表示するときに使う
0923nobodyさん2010/07/20(火) 22:32:55ID:???
ビューキャッシュってapp/tmp/cache/view/にひたすら置かれていくけど、
キャッシュ数が多くなったときのためにディレクトリで管理とかできないの?
0924nobodyさん2010/07/21(水) 08:39:12ID:???
>>923
出来るだろうけどやる意味あるの?
0925nobodyさん2010/07/21(水) 10:35:13ID:???
何万ファイルにもなるとOSに負荷がかかるとかなんとかかんとか
0926nobodyさん2010/07/21(水) 10:54:21ID:???
少なくともviewの数以上増えないんでしょ??
0927nobodyさん2010/07/21(水) 10:57:09ID:???
>>926
viewの数ではないよ
0928nobodyさん2010/07/21(水) 11:01:22ID:???
ん、そうなんだ。
あんま気にしたことなかったな。

ただディレクトリ見ても延々増えてるようには見えない。
09299232010/07/21(水) 12:17:22ID:???
>>924
デフォでは用意されてないのかねぇ・・・

>>926,>>928
たとえば1万ユーザーいるSNSでいろいろキャッシュしたら
ユーザーホームのページ分1万ファイル作られるし、さらに日記
ページとかとかキャッシュしたら、天井知らずに増える。
3万ファイルくらいまでは普通にキャッシュ増えて行ってしまって、
こりゃまずいと思って対策を考えているところなんだ。
0930nobodyさん2010/07/21(水) 12:20:00ID:???
なにがまずい?
0931nobodyさん2010/07/21(水) 12:25:47ID:???
使ったことないけど他のキャッシュシステムだと上限設定できるのか?
もしそうなら切り替えれば?
0932nobodyさん2010/07/21(水) 12:37:22ID:???
>>930
キャッシュもデータファイルだから、鯖の容量食うからまずいって話だろ?
0933nobodyさん2010/07/21(水) 12:50:08ID:???
>>930
ひとつのディレクトリに概ね1万以上のファイルはファイルシステムの動作が遅くなる
>>929
ディレクトリで分けるのが正攻法じゃね?
0934nobodyさん2010/07/21(水) 12:51:29ID:ULlFclUd
古いファイル消せ
0935nobodyさん2010/07/21(水) 14:11:26ID:???
キャッシュのエンジンはクラスになってるんだから
FileEngineからでも派生させてオレオレエンジンクラスをつくればいいと思うよ。

それよりログインした後のユーザー領域をキャッシュにするのは大丈夫なのかな。
俺はなんか不安だからやってないんだけど、ユーザーIDをキーにするとかでいいんだろうか?
09369232010/07/21(水) 14:15:22ID:???
説明不足ですみません
アクセスはまんべんなくくるので、キャッシュを減らすわけにもいかず、
キャッシュファイルの数はどうしても万単位になってしまうのです
http://soudan1.biglobe.ne.jp/qa4019431.html
この辺によると、やはり同一ディレクトリには10k〜15kくらいのファイル数に
納めることが理想のようです

自分の場合は容量は特に問題ないので、ディレクトリで分けようと思っています。
cakeでは
app/tmp/cache/view/test_read.cgi_php_1268874059.php
という感じのファイルが生成されますが、これを
app/tmp/cache/view/test/read.cgi/php/1268874059.php
みたいな感じで生成する方法はデフォルトで用意されているのでしょうか?
0937nobodyさん2010/07/21(水) 14:16:07ID:???
>>935
ずっと前だけど、そのときはURL叩いたらログインして無くても表示された
でも今ならcake:nocache使えばいけるかも?
0938nobodyさん2010/07/21(水) 14:18:45ID:???
>>936
用意されてない
最後の数字がユニークなら末尾2桁とって 59 というディレクトリに書き出すようにすると100分の1になるよ
09399232010/07/21(水) 14:28:11ID:???
>>938
用意されていないのですね・・・
自前で仕組みを作ってみることにします。
0940nobodyさん2010/07/21(水) 14:29:53ID:???
>>939
あ、でも任意のディレクトリを指定できたかも?
調べてみて
09419232010/07/21(水) 14:36:20ID:???
>>940
保存場所を任意のディレクトリにはできるようです
キャッシュ保存前に保存場所を切り替えてディレクトリに分けて保存するという
やり方もありそうですが、結局読み出しの時にそのディレクトリを指定してあげなきゃ
いけないので、どちらにせよその辺は自前で用意しなきゃいけませんね・・・
09429352010/07/21(水) 14:36:36ID:???
あちょっと違ってた。
ビューのキャッシュのファイル名など決めてんのはキャッシュヘルパーの仕事すね。
09439352010/07/21(水) 14:52:27ID:???
>>937
そんなこともあったんだ。

俺が不安に思ってたのは、キャッシュのファイル名はurlをInflector::slugにかけて作ってるから
下手すると、違うページなのに同一ファイル名のキャッシュができてしまう可能性があること。
1.3のInflector::slugはちょっと良くなったみたいだけど、どうなんだろ。
0944nobodyさん2010/07/21(水) 14:55:11ID:???
>>943
URLごとにキャッシュファイル作成するからそれはない
Inflector::slugの件は、PCREライブラリの設定で、回避可能(確認したのはv1.3.0)
0945nobodyさん2010/07/21(水) 14:56:13ID:???
ビュー内で、そのビューが格納されている
フォルダ名(コントローラー名の頭文字を小文字にしたやつ)
を簡単に取得するにはどうしたらいいでしょうか

$this->name で名前がとれましたが、頭文字が大文字の
ため、毎度変換しないといけないので、もっと簡単にとれれば
と思った次第です
0946nobodyさん2010/07/21(水) 15:11:56ID:???
>>945
つ Inflector
0947nobodyさん2010/07/21(水) 15:45:21ID:???
みなさん、Cakeに移行するまでに使っていたclassや関数ってどうしてます?
コンポーネントやヘルパーを作って完全にCakeに移行します?

Cake用に書き換えるとCake以外で使う時、使えなくなるなって思い
どこまで移植するか悩みます。
0948nobodyさん2010/07/21(水) 16:16:24ID:???
ベンダーにいれろよ
0949nobodyさん2010/07/21(水) 16:32:57ID:???
ベンダーですか・・。DB接続あるし、どうしようか悩むんですよね。
0950nobodyさん2010/07/21(水) 16:39:38ID:???
迷ってる暇があるなら、
さっさとcakePHP用に移行したほうが幸せになれると思うけど。

cakePHPのファンクションを使用しなければ、
他のフレームワークに移行したところで影響は少ないと思う。
0951nobodyさん2010/07/21(水) 16:52:33ID:???
DB接続をハードコーディングしてあるクラス
カラスもつつかないごみじゃない?
0952nobodyさん2010/07/21(水) 18:00:11ID:???
>>950
さっきから小一時間やっていたのですが、
ようやく1つの関数を移行できました・・。

いくらやってもデータが追加できなかったのですが、
素のSQL文って INSERT INTO table_name ('name') VALUES ('aaa')
でもインサートされて、IDはオートインクリメントで連番が付けられますが、
Cakeの場合は、IDフィールドを指定しないと追加されません。

$values["Test"] = array(
'id' =>'', // これが必要
'name'=>$name
)

こういうCake特有の仕様が物凄く面倒なんですよね・・・
0953nobodyさん2010/07/21(水) 19:49:47ID:???
え?
0954nobodyさん2010/07/21(水) 19:56:15ID:???
これがPHP脳ですか?
0955nobodyさん2010/07/21(水) 20:24:57ID:???
本当にゴミ以下のソースで藁
0956nobodyさん2010/07/21(水) 20:27:02ID:???
そんな無駄な資産捨てちまえってww
0957nobodyさん2010/07/21(水) 20:33:16ID:???
おまえらにも親の肩身のタオルケットくらいあるだろうが!
0958nobodyさん2010/07/21(水) 21:39:58ID:???
いちいち変数に値が存在するか否かissetで調べないと
Undefined variableエラーが出るんだけど、
issetで調べない方法はゴミソースで良いの?
0959nobodyさん2010/07/21(水) 23:41:22ID:???
>>958
getデータはrouting使うと、issetやらis_numericやらは省略できる
0960nobodyさん2010/07/21(水) 23:44:28ID:???
emptyで
0961nobodyさん2010/07/22(木) 00:33:00ID:???
>>958
お前は何を言ってるんだ?
それがCakePHPの所為だとおもってるんなら今すぐやめたほうがいい
0962nobodyさん2010/07/22(木) 01:07:55ID:???
array地獄をやめてclassに移行してほしい。
生成した側は構造が分かっているはずだけど、
依存するのは避けたいから利用側で確認しないわけにはいかない。
0963nobodyさん2010/07/22(木) 01:41:18ID:???
formヘルパーのtimeで
24時間以降を、午前1時=25:00
というふうに30時くらいまで追加する方法ってないでしょうか
0964nobodyさん2010/07/22(木) 01:46:11ID:???
継承して数値ずらせばいいだけ
0965nobodyさん2010/07/22(木) 02:05:46ID:???
>>961
止めるって何を?
0966nobodyさん2010/07/22(木) 02:35:07ID:???
人生以外ないだろ
0967nobodyさん2010/07/22(木) 12:00:40ID:???
CakePHPは人生
0968nobodyさん2010/07/22(木) 14:36:53ID:+voqy8bn
AというコントローラーでモデルをA・Bと指定してるとします。
findの場合、$this->B->find でBのモデルに対するデータを取得できますが、
これをページネーションでするにはどうすればいいのでしょうか?
$this->B->paginate()では駄目でした
0969nobodyさん2010/07/22(木) 14:46:06ID:???
$this->B->paginate(’B’)

でいけました。スレ汚しすみません。。
0970nobodyさん2010/07/22(木) 15:50:14ID:???
解決はや!
0971nobodyさん2010/07/22(木) 18:41:51ID:???
>>958
あたまに@つけろ
0972nobodyさん2010/07/22(木) 18:44:59ID:???
@推奨すんなw
あとcakePHPとは関係がない。よそでやれ
0973nobodyさん2010/07/22(木) 19:52:23ID:???
DBのカウンタのフィールドを+1したい(SQL で書くと counter + 1 )のだけど
cakePHPのモデルだとどう書くのですか?
0974nobodyさん2010/07/22(木) 19:56:52ID:???
>>973
インクリメントビヘイビアというのがある
それをそのまま使うか、それを参考に
0975nobodyさん2010/07/22(木) 20:43:44ID:???
>>974
Thanx!!
検索用語が難しくて全然探せなかったので助かりました。

$this->Article->doIncrement($id, 1, 'votes');

Increment Behavior (Articles) | The Bakery, Everything CakePHP
http://bakery.cakephp.org/articles/view/increment-behavior

検索用: フィールド +1 カウンター SQL field +1 counter

と思ってソースみたら、結局findByIdしたものを +1 しているからSQLは2回
投げる気がする。それだったら意味ないっぽい。
上記リンクのコメントのリンク先にあるやり方の方が良さそうかな。
$content->updateAll(array(‘num_of_purchases’ => ‘num_of_purchases+1′)
0976nobodyさん2010/07/22(木) 20:44:53ID:???
または、これかな。

app_model.php

function UpdateHits($id)
{
//debug ($this->useTable);exit;
$FieldToInc = 'views';
$this->execute("UPDATE $this->useTable SET $FieldToInc=$FieldToInc+1 WHERE id=$id");
}
0977nobodyさん2010/07/22(木) 21:22:06ID:???
単純にSQL文で書けば
UPDATE table_name SET count=count+1

なのに、やけにめんどくさいよね。仕様だから仕方ないけど
0978nobodyさん2010/07/22(木) 22:04:37ID:???
そう思ったらquery()つかえばよろし
0979nobodyさん2010/07/22(木) 22:55:12ID:???
まぁ、そこら辺はCakeは遠回りするからね。
シンプルなものなら直書きでも良いんじゃないか。
0980nobodyさん2010/07/23(金) 01:12:40ID:???
>>977
それは排他制御が・・

Cakeのは大丈夫なのか、といわれると知らんが。
0981nobodyさん2010/07/23(金) 01:41:37ID:???
saveしようとして
$dat = array('id'=>null,'txt'=>'AAA')
を table->save($dat)
としたら、
クエリの内容が
INSERT INTO "table" ("id", "txt") VALUES (NULL,'AAA')
となってしまって、
idはnullじゃ駄目なんだよ。とエラーが返ってきます。

通常idがnullだと、クエリからidは外してくれるんですが
何故かidが外れません

何か原因で考えられる事はあるでしょうか
0982nobodyさん2010/07/23(金) 01:43:22ID:???
ならidの辞書型自体を指定しなけりゃいいんじゃね?
0983nobodyさん2010/07/23(金) 02:03:22ID:???
確かにそうなのですが、
これまではidを指定していても自動で外してくれていたんです。

特定の場所だけで発生しています
0984nobodyさん2010/07/23(金) 02:06:15ID:???
これまでって何だよ
0985nobodyさん2010/07/23(金) 02:10:46ID:???
エスパー召喚魔法唱えてるんだろ。
人間に方は放置しておk
0986nobodyさん2010/07/23(金) 02:13:24ID:???
>>981
>>952じゃないの?
0987nobodyさん2010/07/23(金) 02:17:47ID:???
いっそソース一式全部晒してくれれば
バグを見つけてくれる人もいるだろう
0988nobodyさん2010/07/23(金) 02:33:57ID:???
どうでもいいけどチュートリアルくらいはこなしてから人に聞いてるんだろうな
0989nobodyさん2010/07/23(金) 02:37:40ID:???
モデル周りのマニュアルちゃんと読めばなんてこと無いことを苦労してる気がする。
0990nobodyさん2010/07/23(金) 02:39:23ID:???
>>980
この場合の排他制御ってどういう意味?
MySQLならUPDATEしていれば問題ないよね?

incrementの方は排他制御的に問題あると思うけど
0991nobodyさん2010/07/23(金) 03:09:35ID:???
そもそも+1したいってなんなの?
システム変更でデータ移行するから一気に+1したいのか
取り出した値を常に+1したいのか
あーめんどくせーどうでもいいや

ここ最近の質問って全部同一人物だろ
ぐだぐだいってないでCakeやろうと思ったなら
オフィシャルやらチュートリアルやらAPIのドキュメントやら読めよ
嫌なら何も始めるな
0992nobodyさん2010/07/23(金) 04:09:29ID:???
>>991
同一人物じゃないが
UPDATE table_name SET count=count+1 をしたい

>ぐだぐだいってないでCakeやろうと思ったなら
>オフィシャルやらチュートリアルやらAPIのドキュメントやら読めよ

どこに書いてあるの? どこにも書いてない、できないから上記の答えになっているんだろ?
日本語が理解できないならまず日本語を勉強してこいよ
0993nobodyさん2010/07/23(金) 04:30:20ID:???
UPDATE 〜 のSQL文書いたのは俺だけどなw

てか、count+1する場面って結構あると思うけどな。
在庫管理にカウンターに投稿数の加算とか。

チュートリアル見て質問してるだろうけど、
翻訳が変だったり、不十分だったりするから人に聞くんでしょ。
0994nobodyさん2010/07/23(金) 08:36:28ID:???
>>992
ならそれをModel->query()で問題ないっていってんだろ
しつけーんだよアホか
0995nobodyさん2010/07/23(金) 08:49:45ID:???
「cakephp increment」で検索かけるとすぐに件のビヘイビア見つかって解決。
検索できるようになろうね。

それに対して>>977
>単純にSQL文で書けば
>UPDATE table_name SET count=count+1
>
>なのに、やけにめんどくさいよね。仕様だから仕方ないけど

なんだけど、これ俺勘違いして質問者が言ってると思ってた
だからそう思うならquery()で書けばいいって書いたわけ。
0996nobodyさん2010/07/23(金) 08:53:56ID:???
次スレ立ててくるわ
0997nobodyさん2010/07/23(金) 09:17:12ID:???
【PHP】フレームワーク CakePHP 9ホール目【v1.3】
http://pc11.2ch.net/test/read.cgi/php/1279844006/

どぞー
0998nobodyさん2010/07/23(金) 14:52:49ID:???
>>994
バカか?
queryでできることには誰も反論してないだろ。誰がどこでそれに問題があるって言ったと思っているんだよ。


マニュアル等に書いてないのも事実だろ?
まず日本語の読解能力つけろよ

そんな話はしてなくて今は排他処理のことを聞いているんだよ。
0999nobodyさん2010/07/23(金) 15:25:43ID:???
逆ギレの現場を見た

w
1000nobodyさん2010/07/23(金) 15:50:25ID:???
次いってみよー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。