サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
text.tklabo.net
requestActionはControllerやView内において、特定のactionを呼びだすときに使います。 たとえば、Viewの一部品であるelementのなかで使用し、「最新のニュースを数件表示する」といった機能を実装できます。 elementにしておけば複数のページから呼びだすことも、キャッシュを効かすことも可能ですので、非常に重宝します。 requestActionの仕様で、URLは「通常のactionとしてアクセス可能」なため、使い方には注意が必要です。 通常のactionとして実行してほしくない場合は、actionの先頭で(requestActionで呼ばれてない場合には)404ページを出力するようにしましょう CakePHPでは、Viewをレンダリングするのは以下のようなケースです。 $this->autoRenderがtrue(既定値)で、actionが終了するか$
@mon_sat です。 というわけで、CakePHP Advent Calendar に参加してみました。 本日12月10日で起業して4年目を迎えました。 今後ともどうぞよろしくお願いします。 CakePHP Advent Calendar については、下記のリンクを参照のこと。 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2510&forum=16&post_id=6333 「そんな軽いネタで大丈夫か?」 「大丈夫だ。問題ない」 ということで、さくっとしたネタでいきます。 この記事の内容を140文字でまとめたものはこちら(笑) CakePHPの環境を判定するTipsです。 本番環境/テスト環境/開発環境という3つの環境で同じコードを使っているとき、コード内で環境を判定したいときがあります。 有名なのは @cake
さくらインターネット(Sakura Internet)で、git push すると、git-receive-pack: Command not found.と表示されてうまくいかないという問題があります。 問題の原因としては、gitコマンドへのパスが通っていないためなのですが、その解決方法が分からずじまい。 この問題については、以下のようなサイトが参考になります。 git [てきとうにめも] 問題の原因が分かっても、どうにも対処できなかったので、pushする側で対処しました。 #localhost $ cd $ vi .gitconfig # 以下を追加 [alias] spush = push --receive-pack=/home/username/local/git/bin/git-receive-pack sclone = clone --upload-pack=/home/u
なんかおかしいと思いつつも、決定的な情報がなかったために間違ったやり方をしていたのですが、ひょんなことから正しい情報をゲットしたので、私はこうやって使っていますという話を。 (もしかしたらまだまだ非効率なやりかたをしていると思うので是非ご指摘ください) バージョン管理システム自体を知らなかった自分にも理解できるよう、かみ砕いた説明をしたいと思います。 基本的にgitは、sshが使えれば、導入をためらうことはありません。 サーバー間のやりとりはsshを使って行えますので、gitを導入するにあたって余計なポートをあけたりする必要はないです。 gitでは、今いるレポジトリ(ソースを入れてるディレクトリ)を特に「ローカルレポジトリ」と呼び、やりとりする相手方を「リモートレポジトリ」と呼びます。 普段開発している社内のPCを開発サーバー(開発環境)と呼び、Webサイトを公開しているサーバーにはテ
@mon_sat です。 というわけで、CakePHP Advent Calendar に参加してみました。 本日12月10日で起業して4年目を迎えました。 今後ともどうぞよろしくお願いします。 CakePHP Advent Calendar については、下記のリンクを参照のこと。 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2510&forum=16&post_id=6333 「そんな軽いネタで大丈夫か?」 「大丈夫だ。問題ない」 ということで、さくっとしたネタでいきます。 CakePHPの環境を判定するTipsです。 本番環境/テスト環境/開発環境という3つの環境で同じコードを使っているとき、コード内で環境を判定したいときがあります。 有名なのは @cakephper さんのこの記事。 http://d.hat
@mon_sat です。 PHP Matsuri でのハッカソンネタ「愛の告白 Power of Love」ができるまでをチュートリアル形式で。 (チュートリアルとしては詳細が書かれていないのですが・・・) まずは、何を作るか考えた さて。ハッカソン。 何を作ったら良いかというところを考える。 過去作ったやつをCakePHPで修正したい気持ちは満々なのですが、せっかくなので1から作りたいですよね。 そこで、作りたいものリストの中からハッカソン期間中に作れそうなものをピックアップし、最終的に「告白」をするアプリに決めました。 これは、単に(このアプリ上から)「つぶやくと、一定期間次のつぶやきができなくなる」というTwitterアプリです。 アプリ名を「愛の告白」とすれば、送られた側は、そのアプリ名を認知することで、ああ真面目な告白なんだと分かるというもの。 ま、基本的にはネタです
以前のエントリでは、最終的に、テスト環境および本番環境で git pull することによって、それぞれを更新しています。 しかし、git には、push等が実行されると、その後に自動実行してくれるフックメカニズムが用意されています。 これを利用すれば、いちいちbareリポジトリにpush後、手動でgit pullすることなく、自動的に行なわせることができます。 下準備(テスト用と本番用でbranchを分ける) これは必ずしも同じようにやる必要はありませんが、私の場合は、テスト環境用と本番環境用で、それぞれbranchを分けることにしています。 本番環境用を masterブランチ、テスト環境用を developブランチとします。 まずは、ブランチを作りましょう。 #localhost # 現在のブランチを確認する $ git branch -l * master $ git check
CakePHPでRSSフィードをはくのは、ものすごくカンタンです。 今回、当ブログで身をもって体験しましたので、ぜひ。 とはいえ、すでに他のサイトでRSSについては、記事になっています。 (わたしも今回参照しながら対応させていただきました。m(_ _)m) ぜひ、以下のサイトを参考に設定してみてください。 RssHelper で RSS フィードを生成する :: RSS :: 主要なヘルパー :: マニュアル :: 1.2 Collection :: The Cookbook CakePHP1.2でRSS2.0を出力する[RSS][CakePHP] | Web&MUSICブログ QUALL CakePHPのRSSヘルパーの使い方まとめ - 頭ん中 基本的な流れは、上記のサイトの方が詳しいので、そちらを見ていただくとしまして、今回は、Web&MUSICブログ QUALLさんのところで対
Ktai Library 勉強会に行ってきました。 といっても、第1回が3月8日(月)で第2回が4月16日(金)でしたので、もうかれこれ1ヶ月近く経とうとしていますが。。。 でも、ちっちゃいことは気にしないで、両日を通して学んだことをまとめつつ、感想などを。(遅ればせながら) 準備編 せっかく作者の@ecworks_masapさんが来るわけですから、できるだけ準備をしておこうというわけで、とりいそぎセットアップを。 CakePHPは1.2を使用しました。 (当日聞いたら1.3でも普通に使えるということで、第2回からは1.3を使用) Ktai Library は、今後のバージョンアップに備えて、gitで持ってくる。 $ git clone http://github.com/MASA-P/KtaiLibrary.git (app/vendors/ecw となるように、KtaiLibra
カウンターキャッシュとは、hasManyしている関連Modelがあるとき、そのModelの件数を元Modelに保持しておく機能です。 http://book.cakephp.org/ja/view/81/belongsTo たとえばArticle hasMany Comment というコメントを複数ぶらさげている記事があったとき、コメントの件数をArticle Modelに持たせることができます。 これによりわざわざコメントModelを取得することなく、コメントの件数を(記事一覧ページに)表示させるといったことが可能です。 データベースの構造からすると冗長なデータの持ち方ともいえますが、フィールドをひとつ増やすことでDBへのアクセスを減らすことが見込めますので、ぜひ積極的に活用したい機能です。 使い方は簡単です。 HABTMのcounterCacheは後述します。 まず、上記の例でA
CakePHPには、非常に強力なアソシエーションという機能があります。 これは相互に関連する複数のModel(テーブル)を一括して扱うための優れた仕組みです。 便利なアソシエーションですが、マニュアルを読んで理解したつもりでも、実際に活用する段になって、どのように設定すればよいのか迷うことがあります。 CakePHPに不慣れな方がアソシエーションで迷っていたときに、どのように教えてあげると分かりやすいのかという視点で、アソシエーションについてまとめてみました。 ここではHABTM(Has And BelongsTo Many)については触れません。それはまた別の機会で。 よくある勘違い 一般にAとBというふたつのモデルがあったとき、AモデルがBモデルを『ひとつ持っているときはhasOne』で『複数持っているときはhasMany』と認識している場合がありますが、その理解のままだと、ときに混
CakePHPのCore BehaviorであるTree Behavior は、簡単にツリー構造のデータを扱うことができる便利なビヘイビアです。 http://book.cakephp.org/ja/complete/91/Tree さらに、bakeryで公開されている準公式HelperであるTree Helperと併せて利用すると、その簡単さに誰もが驚くことでしょう。 得意なデータはたとえば次のようなものがあります。 ディレクトリ カテゴリ(親子形式のあるもの) ユーザーグループ その他 基本的に何らかのデータをhasManyするModelが適していると思われます。 例として、複数のArticleを持つCategory Model のテーブルをみてみましょう。 id integer name string article_count integer # coun
今までさほどシビアにキャッシュについて考えてこなかったのですが、ここらでキャッシュについてまとめてみます。 まずView系のキャッシュのうち代表的なものを。 element ( & requestAction ) キャッシュ Viewキャッシュ Html Cache Helper 3は、Bakeryに掲載されているMatt氏作成のヘルパーです。初回アクセス時にHTMLファイルを生成するため、以後PHPすら使われません。 多少の制限事項がありますので、それについては、後述。 下に行くほど(1→2→3)キャッシュの威力が大きくなります。 以下順番に見ていきましょう。 1.element ( & requestAction ) キャッシュ Viewをelement単位でキャッシュしていく方法です。 ヘッダーやフッター、メニューバーやHTMLのheadなど、使い勝手は良いでしょう。 記
このページを最初にブックマークしてみませんか?
『text.tklabo.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く