この記事はSymfony Advent Calendar 2015 15日目の記事です(当日0時過ぎに枠が空いてる事に気づいて急遽書きました。)。前回は@tai2さんのDoctrineのベストプラクティス(Doctrine 2 documentationから抜粋翻訳)でした。 既にお使いの方はご存知かと思いま…
この記事はSymfony Advent Calendar 2015 13日目の記事です。前回は@77webさんのSymfonyのFormをテストするとき、どんなテストクラスを書くべきか?でした。 今日はSymfonyのコアメンバーであり、Form, Validator, OptionsResolverなどの主要コンポーネント…
この記事は Symfony Advent Calendar 2014 の21日目の記事です。 いよいよAdvent Calendarも最終週、残す所あと5日となりましたね。 LiipFunctionalTestBundleは、以前日本Symfonyユーザ会でも紹介されていたSymfonyアプリケーションのファンクショナルテス…
この記事は Symfony Advent Calendar 2014 の12日目の記事です。 当初はFormについて何か書く予定でしたが、どうしても長くなってしまうのでRoutingについて書こうと思います。 SymfonyのRoutingでは、YAML, XML, Annotationなど様々な形式でルートを設定す…
僕はSymfony+Doctrineプロジェクトで機能テストを作る際、 LiipFunctionalTestBundle を使ってテスト環境だけSQLiteで動作するようにしているのですが、ある時から途中でDBがロックしてしまい、テストスイートがパスしなくなってしまいました。 SQLSTATE[HY0…
Symfony2を使い始めて2年くらい経ちましたが、未だ全容をつかみきれない機能の1つがForm。今回はそんなFormのフィールドタイプについて話します。 通常、Symfony2のFormではフィールドタイプを次のようにして定義します。 $builder->add('addressLine', 'tex…
AcmeBlogBundle\Repository\BlogRepositoryをサービスコンテナに追加: # @AcmeBlogBundle/Resources/config/services.yml parameters: acme_blog.repository.blog.class: Acme\BlogBundle\Repository\BlogRepository services: acme_blog.repository.blog: c…
Vagrantの共有ディレクトリ設定にNFSを使用している場合、vagrant up時に毎回sudoのパスワードを入力しないといけません。 なんとかならないものかとググっていたらありました。 Vagrant NFS Shares without a password どうやら/etc/sudoersに数行追加する…
※Doctrine 2.3 以下でのお話です。 MySQL のカラムにTEXT型を使おうとして普通に type を text にするとLONGTEXT型になってしまいます。 /** * @ORM\Column(type="text") */ private $title; ※コンソール結果 $ php app/console doctrine:schema:create --du…
通常 Root Device が ebs の EC2 から AMI イメージを生成する際、インスタンスを一時停止する必要がありますが(自動で停止します)実は無停止で生成する方法も存在するので今回はその手順をご紹介します。 ※今回はRightImage_CentOS_6.4_x64_v13.5.0.2_EBS…
HTTP リクエストを送る PHP ライブラリは数多くありますが、中でも Buzz\Browser が使いやすかったので Symfony での使用例をご紹介。 インストール いつも通り、Composer でインストールします。作者は Assetic で有名な Kirs Wallsmith さんです。 php com…
Symfony でスマートフォン対応するにあたって LiipThemeBundle がよさげだったのでご紹介。また当バンドルを使用する際 Assetic でハマる箇所がある為メモ。 Symfony Standard Edition 2.2.1 の AcmeDemoBundle で試してみます。 LiipThemeBundle をインスト…
Symfony で採用されているロガーライブラリ Monolog は Python の LogBook と言うライブラリに影響を受けており、 柔軟なロギング処理が可能です。 今回は、Symfony の運用環境でERRORレベル以上のログをファイルに書き込みつつ、メールでも通知するように設…
/** * @Route("/test.json", name="json") */ public function jsonAction() { // do something return new JsonResponse(array('id' => 12345, 'title' => 'json test')); } バージョン 2.1 で追加された JsonResponse をコントローラ内で返すだけです。コ…
Symfony 2.2 で正式に追加された機能の様です。 フロントエンドをexample.com、バックエンドをsystem.example.comとしてそれぞれ別のバンドルで運用する場合の設定例をご紹介。 まずはバックエンド用のバンドルを作成します。 $ php app/console generate:bu…
今回は Symfony アプリを Capistrano で簡単にデプロイできる Capifony (http://capifony.org) の使い方を紹介します。 実行環境は Ruby 1.9.1 + Capistrano 2.14.2 です。 Capifony をインストールする RubyGems でインストールします。 $ gem install capi…
Apache ユーザに特定のディレクトリへの書き込み権限を与えようと思って setfacl を使用したらこんなエラーが。 (※CentOS 6.2 x86_64 でのお話) setfacl -m u:www-data:rwx /var/www/example.com/logs setfacl: /var/www/example.com/logs: Operation not pe…
Doctrine2 のエンティティプロパティに unsigned を設定する方法が分かりづらかったのでメモ。 /** * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") * @ORM\Column(type="bigint", options={"unsigned"=true}) */ protected $id; こんな感じで Column…
Fixtures 内で、サービスコンテナを呼び出したくなる事はしばしばあります。 例えば User エンティティクラスが Security コンポーネントの UserInterface を実装している場合、PasswordEncoder を使いたくなりますね。 しかしそのままでは AbstractFixture …
iPod touch 欲しい! id:hatenablog http://staff.hatenablog.com/entry/iphone-app-campaign アプリをダウンロードしてiPod touchをもらおう! iPhoneアプリ「はてなブログ」をリリースしました
My memorable first entry! Test with the Markdown. What is the Markdown? The Markdown is a notation that can effect HTML decoration to text pretty easily. Something like that: Strong, Italic, Code Snippet Test to embed a gist