Posts Tagged ‘cakephp’

    はてなブックマーク - CakePHPでPartialHelperはじめました
    このエントリーをはてなブックマークに追加

    こんにちは。
    今週末、GALAXY Sを買うFusicサクこと桜川です。
    ついに自分もスマートフォンにランクアップです。

    さて、今回は前回と同じくCakePHPになります。
    PartialHelper」というヘルパーを作成しましたのでご紹介させて頂きます。

    PartialHelper

    CakePHPはコントローラーに特化したelementを作りにくいと思ったことはないでしょうか?

    たとえば、shopsコントローラー内のみで使うelementを作る場合
    /app/views/elements/shop_form.ctp
    とか、
    /app/views/elements/shop/form.ctp
    といったような名前やディレクトリ名を付ける必要があります。

    これが1個2個くらいなら問題ないのですが、大規模案件になってくるとelementの数も膨大で管理が大変だったり、elementの名前を考えるだけでも大変になったりします。

    また、コントローラーに特化しているにも関わらず、elementというどこからでもアクセス可能な領域に配置しないといけないところも作りにくいポイントになるかと思います。

    PartialHelperを使うとelementファイルをviewファイルと同じディレクトリに配置できるようになり、コントローラーに特化したelementを作る場合にちょっとだけ楽にしてくれます。

    PartialHelperの使い方

    kozo’s PartialHelper at master – GitHub -

    1. PartialHelperをgithubからダウンロードします。
    2. PartialHelperの配置
      「/app/views/helpers」に配置します。
    3. PartialHelperの読み込み
    4. PartialHelper用のviewファイルの配置
      「/app/views/shops/_form.ctp」に配置します。
      ※Partialのviewファイルは先頭にアンダーバーをつけます。
    5. PartialHelperの使用
      ※読み込みの場合は先頭にアンダーバーをつけません。
    6. これでブラウザから「/shops/index」アクセスすると「PartialHelperのテスト」の文言が表示されるはずです。

    ポイント

    1. viewファイルと同じ位置にPartialViewファイルを配置する
    2. PartialViewファイルはファイル名の先頭にアンダーバーをつける
    3. PartialViewファイルの中身はelementとまったく同じである
    4. $this->Partial->render()の引数は$this->element()の引数とまったく同じである
    5. 機能面も読み込むファイルの位置が違うだけでelementとまったく同じである

    まとめ

    PartialHelperを導入することで、elementが全体で共通して使う小さいviewファイル、Partialがコントローラーに特化したviewファイルと切り分けることができすっきりします。
    ぜひPartialHelperをお使いください!!

      はてなブックマーク - CakePHPのdebug_kitに定数やサーバ変数を表示するパネルを追加
      このエントリーをはてなブックマークに追加

      こんにちは。モンハン3rdで早く上位に行きたい、Fusicサクこと桜川です。
      2回目の登場になります。よろしくお願いします。

      モンハンの内容をブログに書きたいところですが技術の内容を書けと怒られそうですので、ここはぐっと我慢をして本日はCakePHPについて書かせて頂きたいと思います。

      さて、本日の内容は「debug_kitに定数やサーバ変数を表示するパネルを追加」するプラグイン「debug_kit_settings」を作成しましたので、そちらをご紹介させて頂きます。

      作成した経緯

      CakePHPを使っているときwebrootディレクトリまでのパスを取得したい場合「WWW_ROOT」定数を使用すると思うのですが、みなさんはふと忘れてしまうことはないでしょうか?

      自分はよく忘れます。。。

      しかも、APP_DIR?WWW_ROOT?APP?どれだったけ?と似たような名前でどこへのパスなのかがわからなくなることもしょっちゅうあります。

      というわけで物覚えの悪い自分の為に、定数等を表示するdebug_kitのパネルがdebug_kit_settingsになります。
      あと、単純にsymfonyに定数を表示する機能があるのにCakeに内のはなんか悔しい気がするからです。

      機能

      debug_kit_settingsが表示できる機能は以下の4つになります。

       1.Defines
         CakePHPとPHPそれぞれの定数を表示します。(検索機能あり)
       2.Servers
         $_SERVERの値を表示します。(検索機能あり)
       3.Extensions
         読み込まれているExtensionの一覧を表示します。
       4.Database
         現在接続されているデータベースの情報を表示します。

      使い方

      kozo’s debug_kit_setting at master – GitHub -

       1.GitHubでソースは公開していますので、ダウンロードしてください。
       2.「app/plugins/debug_kit_setting」となるように配置してください。
       3.app_controller.phpで以下のようにdebug_kit_settingsをパネルとして読み込んでください。

       4.完成
        image

       あら簡単♪
       これで、もう定数や$_SERVERに迷うことがありません!

      おまけ

      debug_kit_settingsのDefinesServersには、表示される数が多いのでjavascriptで検索機能を追加しています。
      この機能は弊社javascript部隊の一人島田が前回ご紹介しました、jquery.simplesearch.jsの機能を使い追加してくれました。
      ですので、javascript関連でバグがでた場合は私ではなく弊社島田へバグってるぞ!!とご連絡ください。
      よろしくお願い致します。

      では、また次回お会いしましょう。
      さよ~なら~

        はてなブックマーク - PHPMatsuri参加レポート(3/3) Manual Plugin
        このエントリーをはてなブックマークに追加

        いまさらながらPHP Matsuriの最終レポートです。
        自分のMatsuriはまだ終わっていません。小山です。

        ハッカソンターゲット

        さて、JIREI NIGHTも終わって自分が開発しようと思ったのが、「セルフドキュメントプラグイン」でした。

        今までCakePHPプロジェクト自身の「DBスキーマを図で表すプラグイン」や「Gitコミットログを参照するプラグイン」を作ってきたのですが
        (最近は「自身のViewファイルを表示するプラグイン」なども作りました)、どうやら「セルフ何とか」が好きみたいです。
        基本は開発のサポートですね。

        で、今回のターゲットですが、最近は案件で「マニュアルはHTMLでもいい。むしろHTMLのほうが使いやすい」と思うこともあって、「セルフマニュアル」になりました。

        マニュアルといえば「説明文章」と「スナップショット」→説明文章なんてただのテキストだから面白くない→じゃあスナップショット→「システムでシステム自身のスナップショットを撮る」

        というのが今回の実装ターゲットになりました。後のWiki機能なんてのは飾りです。

        実装

        「システムでシステムのスナップショットなんて撮れるのか」ということですが、サーバもPCです(自分のメイン開発機はUbuntuサーバです)。当然ブラウザだって動きます。「サーバ内でブラウザ動かせばなんとかなるでしょ」ということで、「CakePHPプラグイン内でブラウザを叩く」という方向性に決まりました。

        ところがいろいろ調査をしているうちに面白い試みをしているプロジェクトをみつけたので、途中から「CakePHPプラグイン内にブラウザを内蔵する」に若干暴挙にみえる方向に転換をしました。(でも上のプロジェクトを見たらそうしたくなりますよね?ね?)

        結果として、見事に「システムからシステムのスナップショットを撮る」ということに成功
        PHP Matsuriの動画にたまたま自分の開発時点のデモが写っていました(PHPMatsuriの動画まとめの2つ目の3:10頃)。

        ユニットホスティング

        さらにここからユニットホスティングにデモ環境を構築しました。
        もともとは特徴的な利用の仕方はできないと思っていたので、ユニットホスティングを使う予定はなかったのですが、VMで作っていたものをデモとして見せにくいことに途中から気づいて、急遽構築を開始しました。
        そんな「急遽」だったのですが、これがまた使いやすかったです。
        サーバ環境構築まで本当にわずかな時間しか必要なく、さらにグローバルIPが付与することも可能。管理インタフェースも非常に使いやすい。

        使ってみて、業務用途で即浮かんだのが「クライアントへのデモ」の際の一時的サーバでした。
        そういう形で社内に浸透させて、将来的には一時的なサーバ追加などにの「クラウドらしい用途」など、夢が広がります。

        そんなこんなでデモ環境ができたところで、だいたい寝たのが深夜5時過ぎでした。

        結果とまとめ

        LTのときの発表資料は以下です。

        (※現在このManual Pluginはスナップショット機能だけを切り出してSnapshot Pluginとして機能を整備中ですが、近いうちにリリースできればなと思っています(誰得な機能ですがww))

        結果、ユニットホスティング賞をいただきました!
        投票してくださった皆さんありがとうございました!

        PHPMatsuriで「開発者で集まって集中しての開発」というのは本当にいい経験でした。
        確実に濃い時間が流れて、「精神と時の部屋」のような成長感がありました。
        このMatsuriのアイデアを実現に導いたスタッフの方々には本当に脱帽です(自分は途中からの手伝い程度でした)。

        また是非こんなイベントが開催されることを願っています。
        本当にどうもありがとうございました!