サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
issei-m.hatenablog.jp
この記事はSymfony Advent Calendar 2015 15日目の記事です(当日0時過ぎに枠が空いてる事に気づいて急遽書きました。)。前回は@tai2さんのDoctrineのベストプラクティス(Doctrine 2 documentationから抜粋翻訳)でした。 既にお使いの方はご存知かと思いますが、Symfony Standard Editionのディレクトリ構成がSymfony 3.0になって少し変わりました。 変更点をまとめるとこんな感じです。 app/cacheとapp/logsがそれぞれvar/cacheとvar/logsに移動 app/consoleがbin/consoleに移動 bootstrap.php.cacheとSymfonyRequirements.phpがappではなくvarディレクトリに生成されるようになった app/phpunit.xml.dist
この記事は Symfony Advent Calendar 2014 の12日目の記事です。 当初はFormについて何か書く予定でしたが、どうしても長くなってしまうのでRoutingについて書こうと思います。 SymfonyのRoutingでは、YAML, XML, Annotationなど様々な形式でルートを設定する事ができますが、皆さんは何で設定していますか?僕はYAMLとAnnotationの両方をよく使います。 Webアプリケーションでは、エンドユーザ向けやシステム管理者向けと言った、複数のサイト構成を取る事が多いと思います。その場合、サイト毎の共通設定をYAML、ページ毎の設定をAnnotationで設定します。 # app/config/routing.yml # エンドユーザ向け frontend: host: app.com prefix: / resource: @App
僕はSymfony+Doctrineプロジェクトで機能テストを作る際、 LiipFunctionalTestBundle を使ってテスト環境だけSQLiteで動作するようにしているのですが、ある時から途中でDBがロックしてしまい、テストスイートがパスしなくなってしまいました。 SQLSTATE[HY000]: General error: 5 database table is locked 原因を探っていくうちに、以下のテストケースに問題がある事が分かりました。 <?php $query = $entityRepository->createHogeQuery(); // Doctrine\ORM\Query $iterator = $query->iterate(); $iterator->rewind(); $this->assertSame($expectedEntity, $it
Symfony2を使い始めて2年くらい経ちましたが、未だ全容をつかみきれない機能の1つがForm。今回はそんなFormのフィールドタイプについて話します。 通常、Symfony2のFormではフィールドタイプを次のようにして定義します。 $builder->add('addressLine', 'text', ['label' => '住所']); $builder->add('latitude', 'hidden'); $builder->add('longitude', 'hidden'); テンプレートはこんな感じ。 {{ form_start(form) }} {{ form_row(form.addressLine) }} <button type="submit">送信</button> {{ form_end(form) }} {# hiddenフィールドはここで自動出力され
Vagrantの共有ディレクトリ設定にNFSを使用している場合、vagrant up時に毎回sudoのパスワードを入力しないといけません。 なんとかならないものかとググっていたらありました。 Vagrant NFS Shares without a password どうやら/etc/sudoersに数行追加するだけのようです。以下のシェルスクリプトを1度だけsudoで実行すれば追加が行えます。 試しにvagrant upしてみたら無事パスワード無しで起動することができました。
※Doctrine 2.3 以下でのお話です。 MySQL のカラムにTEXT型を使おうとして普通に type を text にするとLONGTEXT型になってしまいます。 /** * @ORM\Column(type="text") */ private $title; ※コンソール結果 $ php app/console doctrine:schema:create --dump-sql > CREATE TABLE ... title LONGTEXT NOT NULL, ... どうやら length を 65532 にするとTEXTになるようです。 /** * @ORM\Column(type="text", length=65532) */ private $title; ※コンソール結果 $ php app/console doctrine:schema:create --d
HTTP リクエストを送る PHP ライブラリは数多くありますが、中でも Buzz\Browser が使いやすかったので Symfony での使用例をご紹介。 インストール いつも通り、Composer でインストールします。作者は Assetic で有名な Kirs Wallsmith さんです。 php composer.phar require kriswallsmith/Buzz:dev-master 折角 Symfony で使うのでサービスコンテナに登録しちゃいます。 # services.yml services: buzz.client.curl: class: Buzz\Client\Curl public: false # 証明書の検証が必要な場合は calls を削除 calls: - [ setVerifyPeer, [false] ] buzz.browser: c
Symfony でスマートフォン対応するにあたって LiipThemeBundle がよさげだったのでご紹介。また当バンドルを使用する際 Assetic でハマる箇所がある為メモ。 Symfony Standard Edition 2.2.1 の AcmeDemoBundle で試してみます。 LiipThemeBundle をインストール Composer でインストール。 $ php composer.phar require liip/theme-bundle:dev-master Bundle を登録。 # app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Liip\ThemeBundle\LiipThemeBundle(), ); } config.yml に追記。
Symfony で採用されているロガーライブラリ Monolog は Python の LogBook と言うライブラリに影響を受けており、 柔軟なロギング処理が可能です。 今回は、Symfony の運用環境でERRORレベル以上のログをファイルに書き込みつつ、メールでも通知するように設定してみます。 以下、config.yml記述例。 monolog: handlers: # ERROR 以上でログファイル書き込み+メール送信 main: type: fingers_crossed action_level: ERROR handler: grouped # 以下 fingers_crossed 用 grouped: type: group members: [file, email] file: type: stream path: %kernel.logs_dir%/%kernel.
Symfony 2.2 で正式に追加された機能の様です。 フロントエンドをexample.com、バックエンドをsystem.example.comとしてそれぞれ別のバンドルで運用する場合の設定例をご紹介。 まずはバックエンド用のバンドルを作成します。 $ php app/console generate:bundle --namespace=Acme/BackendBundle --format=annotation 続いて上記コマンドで自動追記されたBackendBundleへのルーティングを修正します。 # app/config/routing.yml # バックエンド system: resource: "@BackendBundle/Controller/" type: annotation prefix: / host: system.example.com # 追加! # フ
今回は Symfony アプリを Capistrano で簡単にデプロイできる Capifony (http://capifony.org) の使い方を紹介します。 実行環境は Ruby 1.9.1 + Capistrano 2.14.2 です。 Capifony をインストールする RubyGems でインストールします。 $ gem install capifony 続いてデプロイする Symfony プロジェクト上で capifony コマンドを実行し、イニシャライズします。 $ cd /path/to/own_sf2pj $ capifony . これで Capifile と app/config/deploy.rb の2ファイルが自動生成されました。 更に次のコマンドで、実行できるタスクを確認してみます。 $ cap -T しかしここで以下のエラーが…。 "raise_if_co
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 permitted ググってみると、どうやらディスクのマウント時に ACL を許可していないとダメらしい。 てな訳で sudo mount でチェック。 sudo mount /dev/vda1 on / type ext3 (rw) ... 括弧の中に acl が無いので許可されていない模様。有効にする為に /etc/fstab を修正。 sudo vi /etc/fstab /dev/vda1 / ext3 def
このページを最初にブックマークしてみませんか?
『Issei.M's Techlog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く