【PHP】フレームワーク CakePHP 17ホール目【v3α】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/08/02(土) 21:57:41.01ID:LI0DdohH質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
cookbook(マニュアル)
[3.x] http://book.cakephp.org/3.0/
[2.x] http://book.cakephp.org/2.0/ja/
[1.3] http://book.cakephp.org/1.3/ja/
https://twitter.com/cakephp
https://www.facebook.com/CakePHP
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
※前スレ
http://kanae.2ch.net/test/read.cgi/php/1393661004/
0446nobodyさん
2015/04/16(木) 20:04:32.48ID:qC1kWGvR<b>どうやってかいた?</b>
0447nobodyさん
2015/04/16(木) 20:13:15.48ID:???0448nobodyさん
2015/04/16(木) 20:14:44.25ID:???0449nobodyさん
2015/04/16(木) 22:21:57.51ID:???0450nobodyさん
2015/04/18(土) 17:51:43.74ID:???>>472
なんで IDとか日付が他のレスと違ってるの?
2chのバグ?
0451nobodyさん
2015/04/19(日) 18:05:07.95ID:0/QVOYd7#ビュー
echo $this->Form->input('Entry.1.name', array('type' => 'text'));
echo $this->Form->error('Entry.1.name');
では表示されませんでした。
0452nobodyさん
2015/04/19(日) 19:11:07.38ID:???そもそもエラー発生してる?
formのdatetimeのバリデーションとかyear monty dayでエラー吐かせる処理とか参考にするとよいよ
0453nobodyさん
2015/04/19(日) 20:23:57.18ID:0/QVOYd7$this->Entry->validationErrorsをするとエラーは発生しています。
とりあえず簡単には出来そうにないですね、カスタマイズしていかないと・・。
0454nobodyさん
2015/04/19(日) 22:10:36.85ID:???いや、書き方はそれであってると思うよ
少なくとも自分はその書き方で実現できている(cake2.4.6)
なのでエラーの設定側の方を疑ってみるとして、
debug($this->Entry->validationErrors[1]['name']);
の出力結果が
array(
(int) 0 => 'エラーメッセージ'
)
みたいになっているか確認してみるといい
0455nobodyさん
2015/04/19(日) 23:57:05.45ID:0/QVOYd7逆になってました。
array(
'name' => array('0' => 'メッセージ’)
)
みたいな。
バリデーションを発生させる時、手動でやってるのですが、
$this->Entry->set($this->request->data['Entry'][1]);
$this->Entry->validates()
みたいにしているのが駄目なんですかね?
でも、こうしないと個別にバリデーション出来ないし・・・。
0456451
2015/04/20(月) 00:10:41.17ID:???$this->Entry->saveAll($this->request->data['Entry'], array( 'validate' => 'only' ));
だと複数レコードのバリデーションだけやってくれ、
>>451の$this->Form->errorが無くてもエラー表示されました。
0457nobodyさん
2015/04/24(金) 11:11:15.22ID:???Tera Term開発者(チーム)にFTP機能を追加してくれるように頼むか、自分でパッチを書いて提案する
0458nobodyさん
2015/04/24(金) 17:42:45.73ID:T3bkqRm0に誰か回答してやれよ。
0459nobodyさん
2015/04/24(金) 18:37:24.44ID:???0460nobodyさん
2015/04/25(土) 02:41:48.48ID:???もうレンサバで動かすのが無理なのか?
3.0でなんかやってる人ってVPSとかでやってんのかな?
0461nobodyさん
2015/04/25(土) 19:24:11.08ID:tDD6UmBwバッチ処理用にシェルを作ってコンソールから実行するとapp/tmp/cache/models以下にroot権限のファイルができます。
するとWebから実行した時ファイルに書き込めないとエラーになります。
これは普通どうやって対策するものなんでしょうか?よろしくお願いします。
0462nobodyさん
2015/04/25(土) 20:56:01.41ID:???0463nobodyさん
2015/04/26(日) 10:00:38.91ID:???これじゃなくて?
Tmpディレクトリのパーミッション
whoamiチェック
$ cd /var/www/html/cake_2_0
$ vim whoami.php
whoami.php
<?php echo exec('whoami'); ?>
whoami.phpにアクセスし、実行ユーザを確認
http://example.com/cake_2_0/whoami.php
結果がapacheだったとして進めます。
# 権限設定
$ chown -R apache app/tmp
0464nobodyさん
2015/04/26(日) 10:02:31.68ID:???コピペしたらわかりにくくなった
すまそ
ここね
http://qiita.com/sampleb3/items/d274bc1cecda8ef62c28
0465nobodyさん
2015/04/26(日) 11:02:48.16ID:???ブラウザからテーブル作成や初期レコードの追加などを行いたいです。
DBに登録するデータの設定はSchemaから行うのはわかったのですが、
コマンドではなくてブラウザから行う方法が分かりません。
何かやり方がありましたら手順を教えて下さい。
(出来ればPHPのsystemコマンドを使う方法以外で教えて下さい)
0469nobodyさん
2015/04/26(日) 18:29:57.09ID:???一からやりたいという希望のようだけれど、そんな機能はないよ
0470nobodyさん
2015/04/26(日) 20:30:12.18ID:???0471nobodyさん
2015/04/26(日) 22:32:06.38ID:???Asia/Tokyoって書いたらMySQLがエラー吐くんだけども
0473nobodyさん
2015/04/27(月) 19:03:49.33ID:???データベース側でselect now()やってみたら正しい時間になるんだけども
0474nobodyさん
2015/04/27(月) 23:42:19.48ID:???このファイルこういう為にあったのね…
適当すぎました。
0476nobodyさん
2015/04/28(火) 15:17:14.96ID:???多の方を検索して一致する親IDを抽出し、conditionsするのがセオリーですよね?
0477nobodyさん
2015/04/30(木) 02:23:35.28ID:pzkccb8rbeforeFilterでセッションを別にしてもなんか動作ばぐる(
複数のうちのひとつの認証ページにしか飛ばない)んですけど
実現できた人いますか?
0479nobodyさん
2015/04/30(木) 18:28:35.07ID:???コントローラーにpublic $uses = nullとしているんですが
相変わらず
Error: Cannot access empty property
というエラーが表示されるんですが、どうしたらいいでしょうか?
0480nobodyさん
2015/04/30(木) 20:39:57.17ID:???ありがとさんくす
class TasksController extends AppController {
public $components = array(
'Auth' => array(
'loginRedirect' => array(
'controller' => 'offerpage',
'action' => 'index'
),
'logoutRedirect' => array(
'controller' => 'offers',
'action' => 'login',
),
'authenticate' => array(
'Form' => array(
'userModel' => 'Offer',
'passwordHasher' => 'Blowfish'
)
)
)
);
public function beforeFilter(){
# parent::beforeFilter();
// ユーザー自身による登録とログアウトを許可する
$this->Auth->allow('add', 'logout');
# offers,adminsログインと混同しないように
AuthComponent::$sessionKey = 'Auth.offers';
}
0481nobodyさん
2015/04/30(木) 20:40:36.55ID:???class UsersController extends AppController {
public $components = array(
'Auth' => array(
'loginRedirect' => array( 'controller' => 'mypage', 'action' => 'index' ),
'logoutRedirect' => array( 'controller' => 'users', 'action' => 'login' ),
'authenticate' => array(
'Form' => array(
'userModel' => 'User',
'fields' => array('username' => 'email','password' => 'password'),
'passwordHasher' => 'Blowfish'
)
),
'authError' => 'Eメールアドレスとパスワードを入力してください',
)
);
public function beforeFilter(){
parent::beforeFilter();
// ユーザー自身による登録とログアウトを許可する
$this->Auth->allow('add','logout');
# offers,adminsログインと混同しないように
AuthComponent::$sessionKey = 'Auth.users';
です
0483nobodyさん
2015/04/30(木) 20:58:11.41ID:???nullとfalse両方でやってみたけど以下のエラーを吐いてしまいます…
Fatal error: Cannot access empty property in /home/xxx/www/cakephp/lib/Cake/Controller/Controller.php on line 437
0486nobodyさん
2015/05/05(火) 07:01:11.64ID:???やり方が分かりません
誰かやり方を教えてくれませんか?
0487nobodyさん
2015/05/05(火) 20:48:55.06ID:???標準のページングと違う動作をさせたければ
paginateCount()とpaginate()という関数を
モデルかビヘイビアに作り、paginateCountで全体の件数、
paginateで1ページ分のデータをreturnするよう実装すればいい
引数とかの詳細はマニュアルに書いてある
http://book.cakephp.org/2.0/ja/core-libraries/components/pagination.html#id3
0489nobodyさん
2015/05/06(水) 19:12:43.08ID:???0490nobodyさん
2015/05/06(水) 20:39:42.84ID:???0491nobodyさん
2015/05/07(木) 22:42:13.49ID:???「1|2|3|4|5」と表示して5をクリックしたら、
「3|4|5|6|7」と表示させることって出来るのでしょうか?
0493486
2015/05/09(土) 08:14:27.22ID:???結局、IN句がどうしても入らないので(文字列扱いになる)、
ORを利用することで解決しました
もしIN句で実現できるよーって人がいましたらレスしてくれると嬉しいです。
0494nobodyさん
2015/05/09(土) 12:00:46.20ID:???inはorやnot inとかと違って、明示的に書かずに配列を入れるだけでいいはずだよ
普通のfindのconditionsではin動いてる?
0495nobodyさん
2015/05/09(土) 13:18:29.99ID:???自動って、$this->Paginator->numbers()を出力したらということですか?
このままではなりません。普通に、5|6|7・・・とページが増えるだけです。
0497nobodyさん
2015/05/09(土) 13:58:19.35ID:HYo3XLyg自動ではならなかったと思うが…。
0498nobodyさん
2015/05/13(水) 13:39:51.91ID:???これまでprofilesにuser_idを追加していたんだけど、必要なかったんだね。
profilesのidのauto_incrementを止めて、
ProfileモデルにprimaryKey='id'とすれば、saveもfindも問題なく拾ってくれる。
既出だと思うが、自分としては発見だったのでメモする。
0499nobodyさん
2015/05/13(水) 22:16:31.12ID:???hasoneかつbelongstoでお互い同じidならってこと?
便利そうに見えるけど何となく気持ち悪い気もする
0502nobodyさん
2015/05/19(火) 12:15:05.85ID:jQo/pXrBエレガントな方法ってありますでしょうか?
セッションにユーザのIDとパスワードを入れといて
ページ遷移ごとにいちいち認証かけるってのも、あるけど
非セキュアな気がして気が進みません。。。
0503nobodyさん
2015/05/19(火) 13:20:38.39ID:???0504nobodyさん
2015/05/19(火) 17:12:56.72ID:c25x6ol9Cake使うまでもないと思いますが、皆さんはどうしてますか?
PDOと使うとか別の小規模フレームワーク使うとかPHP直書きとか
色んなパターンあると思いますが、出来るだけ手間なく使える方法が知りたいです。
0506nobodyさん
2015/05/19(火) 23:13:58.17ID:???セッションの使い方が間違ってる気がする
普通にauthコンポーネント使って任意のタイミングでsession消すか
logoutさせればok
>>504
1ファイルで収まる程度ならpure php
それ以上ならcakephp使うわ
ミニマルフレームワークに学習コストかける気になれない
0507504
2015/05/19(火) 23:46:28.25ID:???DB登録とか参照をどうするか悩んでいます。
Cakeの書き方がベストとはいえ、ページの一部だけに使うのでMVCは必要なく、
かといって、SQL文を直書きなのもどうかと思ったり。
SQLインジェクション対策とか必要ですし。
0509nobodyさん
2015/05/21(木) 21:37:14.24ID:???そんなに不安がるということはかなりの初心者だね?
もう一度PHPを基本からじっくり勉強し直した方が良いかもよ。
0510nobodyさん
2015/06/03(水) 21:07:19.92ID:???WEBサーバはnginxで「/var/www/docroot/hello/cake」にCakeを置きました。
ドキュメントルートは「/var/www/docroot/hello」です(Cakeはサブディレクトリ)。
そこで「https://foobar.net/cake/」でアクセスします。
しかし、cssやgifが取れない。ログには「https://foobar.net/cake/baz.css」と残っています。
Cake的には「https://foobar.net/cake/app/webroot/baz.css」を読んで欲しいが、それが上手くいかない。
ググると日・英なり、色々と出ては来るが、どうにも決定打がない。
お分かりになる方いますか。
0511nobodyさん
2015/06/03(水) 21:23:59.28ID:???黙れバカ。ぐぐれ。
0512nobodyさん
2015/06/03(水) 22:20:10.80ID:???さすがにそのレベルだと回答するのも馬鹿馬鹿しくなるな
0513nobodyさん
2015/06/03(水) 23:07:24.18ID:???0515nobodyさん
2015/06/04(木) 01:26:07.24ID:???0516nobodyさん
2015/06/04(木) 21:42:11.27ID:???0517nobodyさん
2015/06/04(木) 21:57:48.06ID:???0518nobodyさん
2015/06/06(土) 00:04:16.21ID:rAdaJfyphttps://www.youtube.com/watch?v=Tk--WgBtIBA
0519nobodyさん
2015/06/10(水) 10:26:16.68ID:???マスタ統合+リバースプロキシでシステム間を往き来できるようにはなったのですが
�@UI統一のためメニューバーを共通部品化したいが、テンプレートエンジンが異なるため統合できない、そうなると今後その部分の二重管理が避けられなくなってしまう。
�Aログイン認証をどちらかのフレームワークに寄せたいがログインセッションを共通で読めるようにする方法がわからない。例えばオレオレフレームワークでCakePHPが読めるセッションを作るといったことが出来るのか??
という問題にぶち当たり頭を抱えております。
�@�Aについてみなさまのお知恵を拝借できないでしょうか?
0523nobodyさん
2015/06/11(木) 08:53:44.17ID:???0524nobodyさん
2015/06/11(木) 12:09:32.15ID:???0526nobodyさん
2015/06/19(金) 12:17:16.27ID:SOLYvyQT$this->Auth->user()をうまく拾えるのですが、
これを例えば、Fooコントローラ内で
同じものを拾いたい場合どうすればいいか、
教えて頂けますでしょうか。
AuthComponent::$sessionKeyを同じものにしても
だめでした。
0530nobodyさん
2015/06/22(月) 14:29:35.10ID:L3kxYzS9モデル同士が密結合になるから微妙なカンジがするんだけど、コントローラーでやろうとすると、どんどん太っていくし。
0532nobodyさん
2015/06/22(月) 16:41:23.12ID:???0533nobodyさん
2015/06/23(火) 09:29:54.07ID:P4/MrXim例えば1ユーザー(Userモデル)が自分の趣味を設定できるとします。
趣味はHobbyモデルで複数選択できます。
この時、登録時は単にsaveすればいいので問題無いですが、
編集時はどうすればいいのでしょう?
一旦、Hobbyに登録されているuser_idが該当するデータを削除した後、
追加という形でしょうか?
それともHobbyモデルの該当するuser_idを一旦取得して、
新たに選択したデータを追加、選択を外したデータを削除
という形がよいでしょうか?
どちらもなんか違う気がしてるので、良い方法があれば教えてください。
0534533
2015/06/24(水) 17:26:48.43ID:???編集時は一旦全削除されて新たに追加という形になっていました。
ですので、>>533は前者の方法で正しいみたいです。
0535nobodyさん
2015/07/02(木) 17:37:38.09ID:Bg3Tlr0ucheckboxで複数検索した時、URLが
/posts?category%5B0%5D=1&category%5B1%5D=2
みたいになります。チェックボックスの数だけ
「category%5B0%5D」のパラメータが増えると思うのですが、これで正しいのでしょうか?
(実際に絞り込みができるので、正しいかもしれませんが・・・)
カラムが1つでカンマ区切りとか複数指定する方法があれば教えてください。
0536nobodyさん
2015/07/07(火) 18:57:43.11ID:???ビューにあまりプログラムを書きたくないのですが
0537nobodyさん
2015/07/12(日) 13:42:48.57ID:???見返りをもらって損はしなかったww
超本命が大穴
※を取って ∇をcに置き換え
s※nn2∇h.net/s11/465rty.jpg
0539nobodyさん
2015/07/13(月) 03:11:40.57ID:???http://rola-diet.sblo.jp/
0540nobodyさん
2015/07/13(月) 21:23:44.80ID:???0541nobodyさん
2015/07/13(月) 23:12:26.27ID:???0542nobodyさん
2015/07/14(火) 01:13:58.74ID:???はえーな
0543nobodyさん
2015/07/14(火) 03:47:01.98ID:???もともと2chって質疑をやるには向いてないと思う
仮に回答があったとして何を根拠に信用できるかというのもある
cakeの場合 >1 にあるようなユーザフォーラムもあるし
ja.stackoverflow.com みたいなところだってあるからそういうところを活用すべきでは
0544nobodyさん
2015/07/14(火) 21:00:51.06ID:???0545nobodyさん
2015/07/15(水) 10:22:55.73ID:???■ このスレッドは過去ログ倉庫に格納されています