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

【PHP】フレームワーク CakePHP 17ホール目【v2.4】

1 :nobodyさん:2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E.net
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja

※前スレ
http://kohada.2ch.net/test/read.cgi/php/1378659370/

935 :nobodyさん:2014/07/13(日) 15:40:00.87 ID:???.net
そういう場合はテスト環境はステージング環境と言うところもあるね
最近は開発PCのスペックも十分でローカルにVM立ててやることも多いね

936 :nobodyさん:2014/07/13(日) 17:11:27.37 ID:???.net
ローカル→xampp
テスト環境→自分で契約しているサーバ
本番環境→クライアントが契約しているサーバ

937 :nobodyさん:2014/07/14(月) 19:33:26.67 ID:???.net
SOHOでもやってるのか?

938 :nobodyさん:2014/07/15(火) 13:33:30.91 ID:???.net
Paginator->optionsの設定で質問です。
URLが
http://example.com/posts/:category_id/?type=1&area=2
だとして、Paginator->optionsを以下のように指定しました。
(:category_idはルーティング済みだとお考えください)

$this->Paginator->options(array('url' => array('controller' => 'posts', 'action' => 'index', 'category_id' => $category_id), 'convertKeys' => array('type', 'area')));

しかし、$this->Paginator->next()を表示した時のURLが
http://example.com/posts/:category_id/page:2
となっており、URLパラメータのtypeとareaが付いていません。

設定がおかしいのでしょうか?ご存知の方は教えてください。
Cake2.4.10を使用しています。

939 :nobodyさん:2014/07/15(火) 20:02:08.57 ID:???.net
URL に page:2 がついているところを見ると、paramType を querystring にはしていないように思える。
convertKeys は paramType がデフォルトの named の時には何もしないよ。
つまり >>938 が想像している機能じゃない。
こうしたら動くのでは?

$this->Paginator->options(array('url' => array('controller' => 'posts', 'action' => 'index', 'category_id' => $category_id, '?' => $this->request->query)));

940 :nobodyさん:2014/07/15(火) 20:05:19.07 ID:???.net
>>939
ありがとうございます!この方法で動きました

941 :nobodyさん:2014/07/15(火) 20:11:55.43 ID:???.net
どういたしまして

942 :nobodyさん:2014/07/16(水) 01:11:04.31 ID:???.net
HTMLヘルパーに関して教えて下さい。
以下のようにaタグ内にspanが2つ入ったHTMLを出力するには
HTMLヘルパーをどう書けば良いのでしょうか?

<a href ="http://hoge/controller/action/">
<span class="fuga">ABC</span>
<span class="piyo">XYZ</span>
</a>

HTMLのままビューに書くのは無しの方向でお願いします。

943 :nobodyさん:2014/07/16(水) 01:38:20.50 ID:???.net
第3パラメータ $options = array('escape' => false);

944 :nobodyさん:2014/07/16(水) 01:43:34.95 ID:???.net
<?php
echo $this->Html->link(
$this->Html->tag('span', 'ABC', array('class' => 'fuga')) . PHP_EOL . $this->Html->tag('span', 'XYZ', array('class' => 'piyo'));
array('controller' => 'controller', 'action' => 'action', 'full_base' => true),
array('escape' => false)
);
?>

試してないけどこんな感じか

spanみたいな属性が環境に依存しないタグを複数入れ子にしてまでヘルパーに固執する意味があまりわからん
Well-Formattedなマークアップを確実に出力するメリットよりもHTMLの見通しが悪くなるデメリットが勝るように思える
このHTMLならURLの出力さえヘルパーに面倒見てもらえれば充分じゃね?

945 :nobodyさん:2014/07/16(水) 01:52:30.97 ID:???.net
そうだな。aタグのhrefを<?php echo Router::url('/controller/action');?>
ってな感じにするだけで良いと思う。

946 :nobodyさん:2014/07/16(水) 02:18:18.31 ID:???.net
>>943-944
どうも有り難うございます。
943さんの記述でいけました。
仰る通りここまで記述が長くなると
ヘルパーでの対応はやめた方が良さそうですね。
大変勉強になりました。

947 :nobodyさん:2014/07/16(水) 02:36:58.58 ID:???.net
PHP 5.4でarray()の糖衣構文が使えればヘルパーまみれでも少しは読みやすくなるんじゃないかな

あとは<?php ?>と$thisとechoを一々書かなくて済むと最高なんだが

948 :nobodyさん:2014/07/16(水) 02:41:15.08 ID:???.net
echo はshort_open_tagのONでいけるけど$thisは難しいな

949 :nobodyさん:2014/07/16(水) 02:52:19.44 ID:???.net
その条件をほぼ満たしてるTwigのプラグインなら見かけたことあるけど使ったことはない

https://github.com/WyriHaximus/TwigView

950 :nobodyさん:2014/07/16(水) 06:10:15.29 ID:???.net
5.4 からは short_open_tag の設定に関わらず echo の短縮構文は常に有効。
$this はヘルパーを変数に入れ直せばほぼ消える。

951 :nobodyさん:2014/07/16(水) 08:31:58.76 ID:???.net
HTMLヘルパーなんて使ったことないな。
何故わざわざ独特の書き方をして自分やHTMLコーダーに不便な思いを強いなくてはならないのか。

952 :nobodyさん:2014/07/16(水) 20:50:59.63 ID:???.net
新手の質問だよなそれw
素直に聞けば良いものを。。。

953 :nobodyさん:2014/07/17(木) 01:55:57.38 ID:4qeUm9n8.net
>>919
安心しました。外をあまり知らないのでイレギュラーな開発スタイルかと思ってましたw


>>919
本番でNGにならない様に開発環境でおもいっきりテストしています。
もしバグがあった場合には、開発環境で開発&修正をして再び本番環境にスクリプトを展開する様にしています。


>>936
xamp バグが多過ぎない?

954 :nobodyさん:2014/07/17(木) 12:22:59.07 ID:???.net
>>953
Cakeで開発する点においては、バグは感じないよ。
ただし、古いxamppのバージョンなら動作が糞重くなる

955 :nobodyさん:2014/07/17(木) 13:12:27.85 ID:???.net
xamppのバグで困ったことはないが
Windows用のAPCやmemcachedがうまく動かず困ったことはある
バージョンの相性が厳しい

956 :nobodyさん:2014/07/17(木) 14:51:38.30 ID:???.net
xampp ってそんなにバグあるか?

957 :nobodyさん:2014/07/17(木) 20:48:19.93 ID:???.net
xampp俺も好きじゃないな。
linux環境と少し違うから環境整えるのに一苦労。

958 :nobodyさん:2014/07/17(木) 23:21:39.62 ID:???.net
個別に入れた方が後々いいしね。
どのみち、設定ファイルは触らないとダメなんだし。

959 :nobodyさん:2014/07/17(木) 23:23:50.62 ID:???.net
シェルスクリプトとかcronとか動かねーしな。
もはやExcel開くときしかメリットを感じない。

960 :nobodyさん:2014/07/22(火) 11:17:54.78 ID:???.net
新しいの来たね。またここの住人さんの指摘かな。感謝感謝。

961 :nobodyさん:2014/07/22(火) 23:52:59.82 ID:???.net
どういたしまして

962 :nobodyさん:2014/07/25(金) 03:13:26.91 ID:ZnC0S1uF.net
cakePHPを使って事前にSQLを実行して作成済みの
ビューを実行するにはどういうコードを書けば良いでしょうか?

例)

hoge_view as (
select test_name , test_id as hoge_table );


この事前作成済みの hoge_view をcakePHP経由で呼び出したいです。


>>956
多過ぎて地道にmysql / php とかインストールしてますよ。

963 :nobodyさん:2014/07/25(金) 03:55:22.05 ID:???.net
>>962
Model::query()

964 :nobodyさん:2014/07/25(金) 10:12:13.66 ID:???.net
ビューのModel作りゃいいだろ

965 :nobodyさん:2014/07/25(金) 11:13:14.28 ID:???.net
それすらわからず、xamppをdisるわけか・・・

966 :nobodyさん:2014/07/25(金) 11:41:59.02 ID:Q+uw5XLP.net
>>963

Viewのモデル作成とかもあるんですね。

967 :nobodyさん:2014/07/27(日) 14:03:04.17 ID:akY7lnX2.net
Cakeのバージョン:2.3だと思います。
2点質問があります。

(1)Authコンポーネントに関して
既存システムで「hoge_users」テーブルに対してauth認証を通す処理があります。
こちらに「fuga_users」テーブルに対してauth認証を通す処理を作成したいです。
ログインページは双方で別にしたいため、コントローラーも別になります。

既存処理はAppControllerでauth認証の設定をしているため、そこで分岐させれば
うまくいくのかと思ったのですがどうも上手くいきません。
上記のようなことを実現させるためには、どのような方法を取ればいいのでしょうか?

(2)webroot配下の静的ページに関して
例えばTestコントローラのresultアクションとしてあるURLの配下に

http://www.sample.com/Test/result/hoge.html

このように静的ページを配置したいと考えています。
URLも変更したくないため、極端な話 webroot/Test/result/ ディレクトリが
作成できればいいのですが、Cakeのルール?に即していないからか

http://www.sample.com/Test/result/hoge.html→表示される
http://www.sample.com/Test/result/→表示されなくなる

という状況になってしまいます。
こちらを上手く解決する方法があれば教えて頂けないでしょうか?

宜しくお願い致します。

968 :nobodyさん:2014/07/27(日) 15:18:41.97 ID:???.net
composer使う場合、update時に対象外ファイルとか設定出来ませんか?
configファイルまでupdateされて困ってます。

969 :nobodyさん:2014/07/27(日) 18:07:31.12 ID:???.net
>>968
saveの時に第三パラメーターで更新するカラムを指定すればいいよ

970 :nobodyさん:2014/07/29(火) 23:52:01.63 ID:???.net
cakephp2.5.1をnginxの環境で試運転してるんだけど、
トップページをToppagescontrollerで運用していて、
routes.phpでRouter::connect('', array('controller' => 'Toppages', 'action' => 'index', 'home'));
とやっています。
FirefoxやIEでは正常に動作しますが、Chromeだけはなぜか
トップページが表示されず、https://github.com/cakephp/cakephp/blob/17ae40f0ce616edbbaa4f9b2381988f508b7cbfd/lib/Cake/Console/Templates/skel/webroot/index.php
と同じ内容の生PHPファイルがダウンロードされます。

誰か解決方法分かる人いますか?

971 :nobodyさん:2014/07/30(水) 00:39:00.62 ID:???.net
リダイレクトキャッシュが働いてるだけじゃねぇ?
別環境の Chrome はどうなん?

972 :969:2014/07/30(水) 20:23:16.04 ID:???.net
>>971
ありがとうございました。
リダイレクトキャッシュが働いてたみたいです。
chromeの履歴削除と、再発防止に該当コントローラーに
$this->response->cache('-1 minute', '10 minutes');
を追加しました。

973 :nobodyさん:2014/08/01(金) 01:47:52.34 ID:IViy/2On.net
スレ違いかもしれませんが、JavaScriptスレが過疎っているのでここで質問させてください。

textareaの中が次の様な値が入っているとします。

AAA{改行}
BBB{改行}
CCC{改行}
{改行}

↓ となっているのを、末尾の改行だけを削除する

AAA{改行}
BBB{改行}
CCC{改行}

にはどういうコードを記述すれば良いでしょうか?

974 :nobodyさん:2014/08/01(金) 02:11:43.96 ID:???.net
CakePHP関係あるの?
PHPの質問なのかJavaScriptの質問なのかすらわからない。
それはそれとして考え方としては、文字列の最後に改行コードが2つ連続してるか
どうかを判定して、それが真なら文字列末尾を削ればいいんじゃない?

975 :nobodyさん:2014/08/01(金) 02:59:26.93 ID:???.net
>>973
var textarea = 'AAA¥nBBB¥nCCC¥n¥n';
var new_testarea = textarea.replace("¥n¥n","¥n");
alert(new_testarea);

¥は半角に直せ。あと、Javascriptの質問はWeb制作板に行け。
お前は質問する板を間違えているだけだ。

976 :nobodyさん:2014/08/01(金) 03:38:52.05 ID:HDhLII9a.net
https://www.youtube.com/my_videos?o=U

977 :nobodyさん:2014/08/01(金) 04:13:53.79 ID:???.net
HABTMで使ってる中間テーブルのフィールドでソートする事ってできんのかな。
中間テーブルには結合に必要な情報以外含めちゃ駄目なのか?

978 :nobodyさん:2014/08/01(金) 04:17:08.37 ID:???.net
>>975
これ以上はスレ違いなので続けないけど、その書き方だと
文末じゃなく途中に空行があったときにそっちにhitしちゃう。

979 :976:2014/08/01(金) 05:27:15.04 ID:???.net
結局afterFindでどうにかしたわ

980 :nobodyさん:2014/08/01(金) 12:30:54.30 ID:???.net
>>978
良いんだよ。例題が例題なんだし。

981 :nobodyさん:2014/08/01(金) 13:38:20.68 ID:???.net
>>977
それはやらないほうが良いと公式でも言ってるよ。
替わりに hasManyThrough を使う。
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html#hasmany-through

つまりただ単に、主 hasMany 中間 belongsTo 従属 ってことだ。

982 :nobodyさん:2014/08/01(金) 15:29:47.99 ID:???.net
>>981
Thx!

983 :nobodyさん:2014/08/03(日) 00:28:06.38 ID:iSh91Ahhw
ttp://old-journal.sooey.com/2008/03/26/717/
これ何度読んでも最後から二番目の例がよく分からんのだけど、
$posts = $this->Post->find($options[0], $options);
ってなんでfindの二番目の引数に$options全部渡してんの?$options[1]じゃ駄目なん?
あとここだけfunction index() なのもよく分からん。public外す理由は?

984 :nobodyさん:2015/01/10(土) 11:41:23.56 ID:uqtqFgbzE
質問です。
cakephpの勉強を始めたんですが
viewの記述が物凄く長くなりませんか?

HTMLヘルパーをコントローラで使ってはいけないということなんですが
DB情報の1項目で
>>944さんの記述のようにすごく長くなります。

分担作業が出来るということでMVCいいらしいんですが
どのファイルをページデザイナーさんに渡すんですか?

240 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★