メイン CakePHP コントローラ(Controller)
タグ機能をつけたい | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| logue | 投稿日時: 2008-8-11 8:25 |
Baker スタート ![]() ![]() 登録日: 2008-4-10 居住地: 投稿: 13 |
タグ機能をつけたい cakePHPで作っているアプリケーションにタグ機能をつけたいと思っています。
barkeryのソースや、チュートリアルで作成したブログにタグ機能を実装するチュートリアルなどを参考に組み込もうと思っていますが、前者だとpreg_replaceがなんたらかんたらというエラーで動かないし、後者はベースとなっているcakePHPのバージョンが違います。 みなさんはどのようにタグ機能を実装していますか? |
| custar | 投稿日時: 2008-8-11 11:10 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: タグ機能をつけたい 初期学習時にブログ チュートリアルでタグ付けを経験しましたが、書かれてい
る通りにやったら動きました。Post と Tag を関連付けられました。書かれて いる以上のことはやりませんでしたが。 cakephp : 1.1.x 引用:
ログイン プロンプトが出てきましたが、これ、どうやって入るの? 引用:
cakephp v1.1 による説明ですね。特に問題はないと思います。 引用:
エラーメッセージが出るってことは動こうとしているのですから、それを治し てあげればよいと思います。ちょっと手間ですが、動かせるようになれば、実 装のヒントになるんじゃないですか? 引用:
まずは、説明されている内容を理解することが先です。ですので、cakephp の バージョンなんて気にせず、仕組みを理解した方が良いでしょう。故に、説明 されているバージョンで動かせるようになることをお薦めします。 既に動いているものがあるのなら、それから理解を深めると学習時間の短縮に なります。 私は ACL の学習参考に公開されているソースを探しましたが、実装されている ものはなかったので、少ない説明サイトとソースコードの読み込みによって自 力で実装できるくらいにはなりました。きっと自力でも何とかなりますよ。 以下はその時調べたソースコード公開の有無です。 Just baked They are using cakePHP ---------------------------------------- - Mozilla Addons ........ 1.1 - Scratch by MIT ........ x - Yale Daily News ....... x - The Onion Store ....... x - NoseRub ............... 1.2 - foamee ................ x - twimbler .............. x - MapMe ................. x - Wildflower ............ 1.2 公開されている中にタグをもつものはないようですが、時間があるならば覗い てみたらどうでしょうか。 |
| logue | 投稿日時: 2008-8-13 14:00 |
Baker スタート ![]() ![]() 登録日: 2008-4-10 居住地: 投稿: 13 |
Re: タグ機能をつけたい 失礼。
引用:
berkryのソースは、cakeForgeのアカウントでアクセスできます。 ここから、SVNで最新のソースを取得します。 現時点では、Barkryのソースを参考に作っています。 先ほどのエラーですが、エラーが起きている場所が本体のソース(cakeディレクトリ内)をさしているみたいです。まさか本体のバグなんてことはありえないので、おそらくmodelだと思うのですが、ほかのエラーなどと異なり詳しい行番号などが書かれていないので困っています。 ほとんど、Bakeryのソースまんまなんですけどね。 |
| custar | 投稿日時: 2008-8-17 14:16 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: タグ機能をつけたい 引用:
私の場合、cakeforge のアカウントを作成し、bakery のソースを落としてきて、 展開後、設定をしてから動作を確認することはありません。それほど手間をか けれらないからです。 こういう場合は、どんな目的で、どんなコードを書いて、どういう状況である かを、このスレッド上で分かる状態にしていただくと、手間をさほど掛けずに、 そちらの状況を把握できます。 状況説明には、エラーメッセージがあると尚良いです。 引用:
全くエラー内容が分からないです。 引用:
ある要素技術の習得のためには、その要素技術のみに特化した、完全に動作し ている簡単なサンプルを見つけ、それをそのまま真似してみると理解が進みます。 bakery のソースがそれに適しているかどうかだと思います。 私は bake シェルが作るコードが参考になると思うのですが。それとブログ チュー トリアルでも理解できると思います。 引用:
この手の質問は引いてしまいます。 というのは、私はそれをフォーラムで説明するのが非常に面倒に感じているか らです。仕組みとコードを説明することになり長くなる。 このような場合、まず、logue さんが書かれているコードを提示していただけ ると、それから話を展開できます。 cakephp に関する日本語書籍が少なくとも 2 冊出ていますが、その辺の記述は ないのでしょうか。さらっと書店で眺めただけで、両方とも持ってないから分 かりません。 |
| logue | 投稿日時: 2008-8-18 8:55 |
Baker スタート ![]() ![]() 登録日: 2008-4-10 居住地: 投稿: 13 |
Re: タグ機能をつけたい 参考になるかわかりませんが、コードです。ほとんど、オリジナルのままです。
コントローラー http://code.google.com/p/lorelei/source/browse/trunk/controllers/tags_controller.php モデル http://code.google.com/p/lorelei/source/browse/trunk/models/tag.php タグを使用するコントローラー(ここではarticleからtagを参照する) http://code.google.com/p/lorelei/source/browse/trunk/controllers/articles_controller.php |
| custar | 投稿日時: 2008-8-18 10:45 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: タグ機能をつけたい 引用:
動くかもしれない、という程度しかコメントできません。 というのは、これを追試してみることを私はしないからです。 # 気を悪くしないでくださいね。 そちらで動かした結果、エラーか何か出ているのなら、それからコメントはで きますが、何もないので。 この手のサンプルは、参照する程度に留めた方がいいと思います。というのは、 データベース テーブルの作り方が書かれていませんよね。そこの作り方が違っ ていたら、そもそも動かない。 しかも、Model の bindModel() なんて見えますね。学習初期にこんなの見たら 疑問が増えるばかり。 私は、ブログ チュートリアルの構成をお薦めします。 step-1 : scaffolding を使って、確実にタグを取れるサンプルを作る。 step-2 : scaffolding を止め、bake で add(),index(),view(),edit(),del() を出力させる。 同時に {add,index,view,edit}.ctp も出力。 記述方法の理解。 step-3 : 独自拡張。 bake の作り出すコードは、テスト・検証されているものでしょうから、よっぽ ど外部のサンプルより有益だと思います。しかもかなり簡単。外部のサンプル は、cake のバージョンが異なるかもしれないですし。 |
| logue | 投稿日時: 2008-8-18 15:00 |
Baker スタート ![]() ![]() 登録日: 2008-4-10 居住地: 投稿: 13 |
Re: タグ機能をつけたい 確かにbakeだと追加、一覧、編集、表示といった基本的な処理は自動で出されます。
実際、ほかの部分のコードは、バリテーションなどの確認や、別モデルのデーターの更新などをのぞくと、だいたい正常に動いています。 このタグ機能も、現時点で引っかかっているのは、タグの登録処理だけで、一応手動で入力したタグは動いています。 どのサンプルにも共通していることですが、だいたい中間に入ってくるデーターベースが必要になっているという点です。 articles tags 以外に article_tags というデーターベースが必要になります。ここが問題をややこしくしているところで、articles側の記事のidとtags側のタグのIDを関連づけているようです。 いずれの例にしても、SQLのQueryを直打ちしているのでcakeとしてはどうなのか?というのもあり、実際どういうコーディングをしているのか知りたかったのですが。 なお、データーベースは、どのサンプルでも、おおむね http://d.hatena.ne.jp/nori0620/20071123/1195801255 に書かれているものと同一です。ただ、bekeryではSEOのためか、tagデーターベースに、keynameというテーブルがあり、ここにサーチエンジンに読まれやすくしたタグ名が別途保存されています。 |
| custar | 投稿日時: 2008-8-18 17:51 |
Cake 職人 ![]() ![]() 登録日: 2007-5-31 居住地: 投稿: 189 |
Re: タグ機能をつけたい 引用:
これは仕方のないことではないでしょうか? articles と tags は独立に存在してもいいような内容ですが、関連付けをしよ うとしたら、仲介するテーブルが必要になると思います。 引用:
何が「問題」なのか分からない。 引用:
bake が作るコードでは、sql は一切記述していません。 SQL を直接書かなくて済むようにするのがフレームワークの仕事だと思います。 引用:
私としては、bake の作る Controller を見れば分かります、という回答しか出 ない。 また、上で挙げた Wildflower には "tags_uploads" テーブルがあり、タグを 扱っていました。ご覧になっては。 他の方なら、何を尋ねられたいのか分かる人がいるかもしれないので、バトンタッチ。 |
| MASA-P | 投稿日時: 2008-8-18 18:47 |
Cake 職人 ![]() ![]() 登録日: 2008-1-24 居住地: 投稿: 224 |
Re: タグ機能をつけたい うーん、タグ機能は典型的なhasAndBelongsToManyの応用例だと
思うのですが… 簡単な題材ですし、ソースを丸ごとコピーして動かすと いうよりは、HABTMの仕組みを理解し、自分で作った方が今後の ためになると思います。 preg_replaceのエラーは、パターン構文が間違っているか、異なる 文字コードの文字列を入れているとかの原因が考えられますが、 どうなんでしょうね? |
| logue | 投稿日時: 2008-8-19 9:52 |
Baker スタート ![]() ![]() 登録日: 2008-4-10 居住地: 投稿: 13 |
Re: タグ機能をつけたい preg_replaceの原因は、バリテーションでした。とりあえず、コメントアウトしたところ、タグの追加・保存までは動くようになりました。
しかし、article_tagsといったarticlesとtagsの中間に入るデーターベースが更新されないためやはり動いていません。どのサンプルをみても、モデルやコントローラーを必要としないデーターベースのようなので、どのように扱ってどのように扱えばいいのかも理解しづらい部分があります。 |
| (1) 2 » | |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



