のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,660,234人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレ【PHP】フレームワーク CakePHP 4ホール目【v1.2】

php覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

801 = :

>>699
何というコントローラ&メソッド&ビューに対して
どんなURLでアクセスしたか教えたまえ

802 = :

テーブル:Areas
URL:http://localhost/Areas

MVCはbake allで作ってるからテーブル名から正しく生成されてるはず

804 = :

symfonyより重くはないし、コード生成にしても結局実務で使えないのはsymfonyも同じ。

805 = :

自己解決。
特定の場合に、cake allで生成すると
cakephpが内部で使ってるpublishと言うダミーモデルのデータが残ってしまうらしい。
いくつかモデルを生成した中で、一つだけpublishがはいってしまったものがあった。(Userモデル)
cakephpはデフォルトで全モデルを読み込んでるらしく、どのコントローラにアクセスしようと
publishesテーブルが無いと怒られた。

806 = :

>>805
特定の場合って何だ?

807 = :

そこまでは特定してない
でもcakeのダミーモデルなのは確か

808 = :

教えてほしいことがあるんだけど、いいかな?

2-3個しか入力項目のないフォームがあって、それらの項目に、
hoge, piyo, fuga とか入っているとする。

これを submit したとき、こんなURLに遷移させたい。
http://(base-url)/hoge/piyo/fuga

JavaScriptを使えば簡単だけど、できたらクライアントサイドスクリプトには
依存したくない。

CakePHPに、これを実現するのに便利な仕組みはないんだろうか?
普通に$this->dataからを取得して、implode('/', ...)でつないで redirectす
るしかないのかしら?

809 = :

そんな小さなことまでフレームワークでサポートしたらキリがない

811 = :

>>809
まあそうなんだけど、もし元々あるんなら利用したいと思って。

>>810
え? mod_rewrite って、
base-url/hoge/piyo -> base-url/index.php?param0=hoge¶m1=piyo
という変換だけじゃなくて、
base-url/index.php?param0=hoge¶m1=piyo -> base-url/hoge/piyo
こっちもできるの?

812 = :

正規表現使えばどんなパターンの差し当てでも出来るけど

813 = :

そういうことかー。しかしこういう黒魔術に深入りするのは避けたい。

Apache module mod_rewrite
http://www.net-newbie.com/trans/mod_rewrite.html
> 膨大な設定例やドキュメントがあるにもかかわらず、 mod_rewrite は黒魔
> 術である。かなりイケてるっぽい黒魔術だが、 やっぱり所詮は黒魔術である。
> -- Brian Moore

つうかCake関係ないな。すんません。

814 = :

汎用的なリダイレクトページ作ったら良い

816 = :

多対多のjoinテーブルで
両方のテーブルのフィールドを条件にして片方のテーブルのレコードを抽出したい場合、どうすれば良いですか?
つまりjoinテーブルでつながれた相手側のテーブルのフィールドで自分のレコードを絞り込むと言う事です。

818 = :

>>813
そんなこといったらcakeだって黒魔術(シェア的にww

820 = :

すみませんが、paginatorの設定について教えてください。

http://domain/controller/action/hoge/fuga
みたいな、actionに渡すパラメータが二つ(hoge, fuga)あるページがあります。
これを paginator でめくれるようにしたいのです。

ところがビューのpaginatorヘルパーは、最初の hoge までしか認識してくれな
いようで、生成されたURLは
http://domain/controller/action/hoge/page:1
みたいになってしまいます。(hogeだけが残り、fugaが消えている)

hoge, fuga両方とも paginatorに認識させる設定はないでしょうか?

821 = :

コントローラよりモデルを厚くしたほうがいいっていうけど
それってアソシエーションをモデルにまとめる以外になんかあるの?

822 = :

>>821
これなんてほぼモデルに書いてるよ。
http://www.hideblog.net/nikkis/show/99

コントローラーをプログラムの流れだけといった感じにすると
デバッグも楽だし、何しろ仕様変更の時も対応しやすい。

823 = :

cakephpのモデルに合わせて書いてると
SQLが分割されて遅くならない?
完全に柔軟にテーブル結合とかやれるわけじゃないし

824 = :

今まさに>>823が気になってたんだけどさ。
逆に下手にjoinせずにクエリー投げたほうが、キャッシュが働いてパフォーマンスが良くなったりしてるんじゃないかと。
「Cakeのデフォルトで充分じゃね?」みたいなこと調べた人いないかな?

825 = :

さすがにそれはない
普通、1クエリにまとめた方が速くなる

826 = :

更新の少ないテーブルの場合、ほぼノータイムで返ってきてることが多い
そういう場合、SQLの種類を増やすより、パフォーマンスが良くなるっていう話を聞くよね

829 = :

>>828 ありがとうございます。

バリデーションでエラーになった項目の $form->input で class を指定する、という事
でしょうか?

その場合、バリデーションでエラーになった場合、
その $form-input 項目の css を変更するにはどうしたらいいのでしょう?

何かよい方法があるのでしょうか?


830 = :

>>829
たとえばUser.usernameがvalidation errorの場合、以下のようになる
<div class="input text error">
<label for="UserUsername">ID</label>
<input name="data[User][username]" id="UserUsername" class="form-error" />
<div class="error-message">入力内容を確認してください</div>
</div>
なので、/webroot/css/cake.generic.cssの以下を修正する
.error
.form-error
.error-message

inputの背景色なら
input.form-error { background-color : red } って感じかな

831 = :

唐突ですけど、皆さんにお聞きしたいことがあります。
FORMヘルパーって、DBテーブルと関係の無いフォームを作ることってできます
か?それともそういうのを作るためなら、ただのHTMLを書いたほうが良いので
しょうか?

832 = :

>>830
丁寧にありがとうございます。

バリデーション後の画面にて、class="form-error" が自動で付いている事に
全く気付いていませんでした…。

希望の画面になりました、ありがとうございました。

833 = :

>>831
モデルのところにnull入れてやったらいいんじゃない?
<?php echo $form->text(null, array()); ?>

デフォルトのname属性で足りないなら上書きできる
<?php echo $form->text(null, array('name' => 'title')); ?>

ヘルパのおいしいところを享受できるかはわからん

834 = :

バリデーションのルールで

1. var $validate = array(
2. 'login' => array(
3. 'rule' => array('minLength', '8'),
4. 'message' => 'ユーザ名は8文字以上にしてください。'
5. )
6. );



4. 'message' => 'ユーザ名は8文字以上にしてください。'

の 8 の部分を、\config\const.php などに定義してある値でおきかえたいのですが

class Post extends AppModel
{
var $name = 'Posts';

var $validate = array (

のように、クラスのインスタンス変数で定義?するためか、文字列の結合がエラーになって
できなくて困ってますが、対応できる方法はありますか?

835 = :

listが予約語になっててアクションに使えない罠

836 = :

レコードの一覧出すアクションの名前なんにしたらいい?
/コントローラ/
でアクセスする場合、引数って渡せないよね?

837 = :

>>834
貼付けられたソースが切れてるのでよくわかりませんが、
そのケースではクラス定数を使った方がベターだと思います

>>836
ルーティングの設定によりますが、アクションのindexが省略されてるんだと思うんですが・・・

838 = :

省略されてるとして、
本来indexに続けて書くはずの引数をルートから書いても
アクションだと思われて正しく動作しないよね
ルーティング設定で正規表現書けば出来るんだろうけど

841 = :

>>840
例えば、モデル内で定義するバリデーションのメッセージとして、
「既に登録されています」というメッセージは、どのモデル、ビューかに関わらず
サイト内で一意にしたいわけです。

これを、モデルのクラス定数に定義するという事は、存在しているモデルの数だけ、
同様の「既に登録されています」を定義しなければならないわけで。

こういったサイト全体で一意としたいメッセージ的な文字列は、クラス定数よりは
グローバル定数で定義しちゃいたい、と思うのですが、よろしくないでしょうか?

842 = :

つ継承
つconfigクラス
ついっそ後で置き換え

844 = :

>>841
共通といったって、そんな短い単語を共通化してどうすんの?
世界を視野に入れたプログラム作ってるの?

845 = :

>>841
マスタテーブル作れば良いじゃん
大量のグローバル定数であふれる事は避けるべき

846 = :

CakePHP というか、MVC の考え方がいまいちよくわかってない気がするんですが、
アドバイスをお願いできれば…。

User テーブルがあります。ここは、ログインID と、名前、パスワードがあります。

で、その User テーブルの追加/編集/削除ができるように、UsersController, add/edit ビュー、モデルを
作成しました。

これで、Users テーブルへの追加、削除はできるようになりました。

次に、この Users テーブルの内容に基づいてログインするページを作りたいと思います。

その、ログインを管理するコードというのは、別途コントローラを作成するほうがいいのか、
それとも Users テーブルへのアクセス、という事で、作成済の、UsersControlle や、モデルに
ログインするためのコードを追加するのか、どうすべきなのでしょうか?

同じテーブルへのアクセスでも目的が違う場合は、コントローラも別途作成するものなのか、
それとも、テーブルを主体にコントローラ、モデルをふくらませるべきなのか、
混乱しています。

このあたりアドバイスを頂けるととてもうれしいです。

848 = :

質問

聞いた話だが、cakeって、月500円レベルのレンタルサーバーでも
十分、実用的なスピードで動くんだよね?

849 = :

なんとも答えられない
WEBアプリフレームワークとしては重たい部類
WEBアプリフレームワーク自体は今のコンピュータにとって大した重量じゃない

850 = :

値段=スペックじゃないので何とも言えないけど
その500円ってのがさくらのスタンダードなら問題ない


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について