2011年12月8日木曜日

consoleコマンドリスト

$ php app/console listのコマンドで、コンソールのコマンドリストを見れます。 別にコンソール上で見ればいいけど、一応一覧をメモっておく。 Symfony version 2.0.6 - app/dev/debug Usage:   [options] command [arguments] Options:   --help           -h Display this help message.   --quiet          -q Do not output any message.   --verbose        -v Increase verbosity of messages.   --version        -V Display this program version.   --ansi      ...

既存のテーブルからEntityを作成!

タイトルのように、既存のテーブルからEntityを作成したい場合は、どうするのかなーと思ってた所、こんな記事がありました。→ How to generate Entities from an Existing Datab...

2011年12月6日火曜日

controllerに書くアノテーションについて

SensioFrameworkExtraBundle Symfony2 では、アノテーションとして Routing の情報等を書くけど、そのアノテーションに関する情報がまとまってなくて、どっかにないかなーと思っていたら、ドキュメントにあったので、紹介 + 自分なりにまとめてみます。 とりあえず、アノテーションに以下の5つの機能があるっぽい @Route and @Method : ルーティングの情報や、ルートに許可されるHTTPメソッドを指定 @ParamConverter : リクエストの内容をオブジェクトに変換する機能を使用することを指定 @Template : テンプレート名を指定する @Cache : HTTPキャッシュを作成するためのアノテーション @Route and @Methodドキュメントはコチラ → @Route and @Method /**  * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"})  */ public function showAction($id) { } @Route() では、第一引数で pattern 情報を指定 requirements...

アノテーションを使用するときはインポートすること!

@Route や @Template のアノテーションを利用するときは、 // these import the "@Route" and "@Template" annotations use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; のように、FrameworkExtraBundle の Configuration\Route と Configuration\Template をインポートするこ...

2011年12月5日月曜日

Actionの戻り値について

Symfony2.0 では、Controller の Action の戻り値は、Response オブジェクト。 ってのはまぁ、良いとして、Response オブジェクトの作成方法についてちょっと自分なりにメモしておく。 (間違ってたらコメントください(´・ω・`)) 基本的に以下の3パターン。 ( http://symfony.com/doc/current/book/controller.htmlより引用 ) ① 自分でレスポンスオブジェクトを作成 use Symfony\Component\HttpFoundation\Response; public function helloAction() {     return new Response('Hello world!'); } リダイレクトする場合は、このパターン ②render関数を Action 内で使用 自分でテンプレートを指定して、レンダリングを行う。render() の戻り値が Response オブジェクトなので、これをそのまま Action の戻り値とする。 use Symfony\Component\HttpFoundation\Response; public...

Custom Repository Class

Doctrineでは、Entityというものを使うけど、これは基本的にデータを保持するためだけのクラス。 で、実際に find などの様にデータベース上のデータをフェッチするには、Repository を使用する。 こんな感じ。(http://docs.symfony.gr.jp/symfony2/book/doctrine.htmlより引用) $product = $this->getDoctrine()        -$gt;getRepository('AcmeStoreBundle:Product')        -$gt;find($id); ...で、このgetRepositoryを見てみると、 /**  * Gets the repository for an entity class.  *  * @param string $entityName The name of the entity.  * @return EntityRepository The repository class.  */ public function...

2011年10月20日木曜日

Doctrine - コマンドメモ

① データベースの作成 php app/console doctrine:database:create ② Entity Class の作成 php app/console doctrine:generate:entity --entity="AcmeStoreBundle:Product" --fields="name:string(255) price:float description:text" ちなみに、Doctrineで扱えるフィールドタイプについては、http://docs.symfony.gr.jp/symfony2/book/doctrine.html#book-doctrine-field-typesや、http://www.doctrine-project.org/docs/orm/2.0/en/reference/basic-mapping.html#doctrine-mapping-types に載ってあります。 ③ テーブル/スキーマの作成 php app/console doctrine:schema:update --force ④ Entity Class の更新 php app/console doctrine:generate:entities...

2011年10月17日月曜日

Model (Doctrine) について②

Model (Doctrine) について① の続きです。 詳しくは、Databases and Doctrine ("The Model")を参照してください。 オブジェクトの永続化 INSERTするときは以下のように、Entityに値をセットし、EntituManagerのpersist()を呼び、最後にflush() を実行すれば良い。 use Acme\StoreBundle\Entity\Product; use Symfony\Component\HttpFoundation\Response; public function createAction() { // Productインスタンスの作成 $product = new Product(); // 値をセット $product->setName('A Foo Bar'); $product->setPrice('19.99'); $product->setDescription('Lorem ipsum dolor'); // EntityManager オブジェクトの取得 $em = $this->getDoctrine()->getEntityManager(); ...

Model (Doctrine) について①

Doctrine は, PHPのORM (Object-relational mapping : オブジェクト指向言語におけるオブジェクトと、MySQLやPostgreSQLの様な、リレーショナルデータベースにおけるレコードとを対照させるもの) で、Symfonyで利用されている。 詳しくは、Databases and Doctrine ("The Model")を参照してください。 データベースの情報を設定まず、データベースに接続するためには, app/config/parameters.ini でホストなどを指定する。 [parameters] database_driver="pdo_mysql" database_host="localhost" database_name="hoge" database_user="moge" database_password="piyo" 以下のコマンドを叩けば、app/config/parameters.ini の情報に基づいてデータベースを作成してくれる。 php app/console doctrine:database:create Entity Class の作成エンティティを、src/Acme/StoreBundle/Entity/...

2011年10月14日金曜日

Twigに関するメモ

Twigに関して、少しメモを。 テンプレートの継承が可能 (blocklタグ) {{ ... }}: 変数や式の結果を出力, {{ ... }} で出力されるものは、デフォルトでエスケープしてくれる {% ... %}: for ループや if 文等の、テンプレートのロジックを制御するタグ {# ... #} コメントを記述できる {{ path('_demo_hello' }} のようにして、routing configrationに基づいてパスを記述できる url 関数は絶対 URL を生成 画像やcssなどを読み込む際は、{{ asset('css/blog.css') }} などとすることで、アセットを簡単に扱...

2011年10月13日木曜日

Viewの作成方法

ビューについて少し。 まず、全体のレイアウトは、app/Resources/views/ の中に layout.html.twig で、 ページ毎に異なる部分は、mogeBundle/Resources/views/の中で hello.html.twig で記述。 Twig には、テンプレートの継承機能があり、 layout.html.twigで以下のように書いたとし、 <!-- layout.html.twig --> {% block title %}Layout{% endblock %} 継承先のhello.html.twigで、 <!-- hello.html.twig --> {% block title %}Hello{% endblock %} とすることで、titleブロックのオーバーライドが可能。 ちなみに、デフォルトで存在するレイアウトファイルの中身は以下のようになってる。 <!-- base.html.twig --> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;...

Twig Bundle for Textmate

TwigのTextmate Bundleを作成されている方がいたので、一応紹介。 Anomareh / PHP-Twig.tmbundle Twig用のタグを出力してくれるものです。でも、自分は使わないか...

symfony2 - ページ作成の流れのおさらい

version : 2.0.4 もう少し詳しい情報は、独学Symfony2 : report2 にもあります。 まず, Symfony2でのページ作成は, 以下のSTEPで成り立っている。 ◯ Bundleの作成 ① Create a route : リクエストのURIから, 対応するコントローラーを指定するための Routing 情報を決める ② Create a controller : リクエストを処理し, 応答を返すための Controller の部分を作成 ③ Create a template : テンプレートの作成 Bundleの作成 Bundleの作成AcmeStudyBundleを作成 php app/console generate:bundle --namespace=Acme/HelloBundle...

2011年10月12日水曜日

独学Symfony2 : memo コーディング規則

http://docs.symfony.gr.jp/symfony2/contributing/code/standards.html にコーディング規則がのってました!しかも日本語訳で! ということで...

独学Symfony2 : report4

version : BETA3 (正式リリース後, 改変の可能性あり) 今回は Controller について。 ここらへんからは, ドキュメントを読むよりもソースを実際に書いてやっていくほうが勉強になるだろうってことで、要所要所しか説明しない予定です(めんどうだし。。笑) routing と コントローラー引数 ドキュメントと同じルーティング情報で説明する。 hello:     pattern: /hello/{first_name}/{last_name}     defaults: { _controller: AcmeHelloBundle:Hello:index, color: green }というrouting 設定だとする。この場合, HelloControllerのindexActionが呼ばれるということは, もう明らかである。 そして, first_nameとlast_nameが引数に与えられることもわかる。この引数についてちょっと詳しく見てみる。 color:green の記述のために, $color 引数も与えられる。 function ($first_name,...

独学Symfony2 : report3

version : BETA3 (正式リリース後, 改変の可能性あり) 今回も, ドキュメント的には Creating Pages in Symfony2 の続きになります。 Symfony2プロジェクトの構造 一応, 基本的なSymfony2プロジェクトのディレクトリ構造は, 名前かも判るように Symfony2プロジェクトのディレクトリ構造 app/: アプリケーションのコンフィグファイルを含む src/: 作成するソースなどはここに格納 vendor/: 様々なvendorファイルを置く場所 web/: 公開ディレクトリ, img, css, js などといったのはココ, あとフロントコントローラもここ! という感じ。 ちなみに, プロジェクトを公開するときは, web/ のフロントコントローラにおいて, $kernel = new AppKernel('prod', true); dev環境では見れても, 上記のようにprod環境をtrueにしていないと、prodには反映されないので注意! (一度prodで実行すると キャッシュが作成され, 以後はそのキャッシュで動くっぽいな。たぶん。) また, prod 環境の場合, 速度のための最適化が行われ, そのためにキャッシュを作成するようになっている。そのため,...

独学Symfony2 : report2

version : BETA3 (正式リリース後, 改変の可能性あり) When Flat PHP meets Symfony では, FrameWorkを使うことに利点みたいなのを書いていますので, 初めてFrameWorkなるものを使用して開発する!という場合は読んだほうが良いでしょう。(日本語ドキュメントもありました。) ただ、ここではこの章は省略します。 ということで, Creating Pages in Symfony2 を読んでいきます。 (訳というよりも解説なんで、よろしくですw) まず, Symfony2でのページ作成は, 以下のSTEPで成り立っている。 ◯ Bundleの作成 ① Create a route : リクエストのURIから, 対応するコントローラーを指定するための Routing 情報を決める ② Create a controller : リクエストを処理し, 応答を返すための Controller の部分を作成 ③ Create a template : テンプレートの作成 ということで、実際にマニュアルに従って作成してみる Bundleの作成 Bundleの作成ページ作成を始める前に, まず Bundle というものを作成する必要がある。(Bundleってのは,...

独学Symfony2 : report1

version : BETA3 (正式リリース後, 改変の可能性あり) とりあえず、Symfony2の勉強をしようと, ちょいドキュメントを読んでます。 そのまとめというか、訳というか。実際のページ作成とかは, まず触ってみたいので, ドキュメントのまとめより、自分なりに触った際の解説をしていこうかと。。 Symfony2 and HTTP Fundamentalsl Symfony2のアプリケーションの, 要求~応答までの流れとしては, ① リクエストはまず FrontController なるものに処理され, SymfonyKernelの部分へと渡される。 ② そこで Routing 機能により, 要求されたURIから適切な Controller が選ばれる。 ③ その Controller が呼ばれ, ユーザーに応答を返す という感じになっているようです。(まぁ, Cakephp も似たような感じだよね。) Symfony2 Components についてSymfonyには20以上の多くのComponentが存在します。 おそらく, /vendor/symfony/src/Symfony/Component/* にあるやつかな。(ちなみに21つありました。) このページで説明していたのは以下のもの ...

独学Symfony2 : report0 [インストール]

version : BETA3 (正式リリース後, 改変の可能性あり) 2011年6月4日のSymfony2勉強会に向けて, Symfony2 standard ディストリビューションのインストールを行ったので, そのメモを。 ちなみに OS は Mac OS X 10.6 です。 とりあえずgitとAPCのインストール ① まず, homebrewをインストールします ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)" ② git のインストール brew install git ③ homebrewのアップデート brew update を行うのだが, このコマンドでエラーが生じて途中で止まってしまったため,...

ブログ開設〜

Dev.GrAFR の方でも、少し書いてたけど、しょっと本格的にSymfony2を使うことになってきたので、専用にSymfony2用の開発ブログを解説しましたー(...

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More