Symfony2のBeta1で初めてのBundleを作る
いつの間にやらSymfony2のbeta1が公開されていたので、
そろそろ何かを作って行きます。
最初はどうやってバンドルを作るかから始めます。
もちろん試行錯誤しながらです。
今回はRenmen/ShipmentBundleを作成します。
bundleは/src直下にvender/bundleという形式で作成します。
だから今回は以下のフォルダを作ります。
/src/Renmen/ShipmentBundle
受け入れ先ができたらいよいよファイルを作成します。
ファイルの命名はVenderBundle.phpです。
<?php // /src/Renmen/ShipmentBundle/RenmenShipmentBundle.php namespace Renmen\ShipmentBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class RenmenShipmentBundle extends Bundle { }
以上が、(おそらく)最小のBundleです。
もちろんこのままではただそこにあるだけなので、
今回はControllerを追加し、何かを表示したいと思います。
ControllerはVender/Bundle/Controllerフォルダに格納されます。
/src/Renmen/ShipmentBundle/Controller
次にファイル名ですが、なんでも良いです。
なぜかというと後述しますがrouting.ymlにて
ファイル名を指定するという作業があるためです。
ただまぁ、あまり変な名前をつけてもどうかと思うので
ここでは無難にShipmentControllerとしておきます。
<?php // /src/Renmen/ShipmentBundle/ShipmentController.php namespace Renmen\ShipmentBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class ShipmentController extends Controller { /** * @extra:Route("/", name="_shipment") */ public function indexAction() { return new Response('This is a page made by ShipmentBundle'); } }
以上でbundleの作成は終わりですがSymfony2へbundleを追加するために
routing.yml、AppKernel.php、autoload.phpへ書き加えます。
/app/config/routing.yml
_shipment:
resource: "@RenmentShipmentBundle/Controller/ShipmentController.php"
type: annotation
prefix: /shipment
/app/AppKernel.php
<?php class AppKernel extends Kernel { public function registerBundles() { $bundles = array( (略...) new Acme\DemoBundle\AcmeDemoBundle(), new Renmen\ShipmentBundle\RenmenShipmentBundle(), );
/app/autoload.php
<?php $loader->registerNamespaces(array( (略...) 'Acme' => __DIR__.'/../src', 'Renmen' => __DIR__.'/../src', ));
さて、いよいよ /renmen/ へアクセスすると
This is a page made by RenmenShipmentBundle
と表示されるはずです。
と、ながながと説明しましたが、今の工程は
php app/console init:bundle "Renmen/ShipmentBundle" src
というコマンドによってかなり省略できます。
現状での不満点はautoloader.phpとAppKernel.phpの両者へ
変更を加えなければいけないところでしょうか。
routing.ymlも含めると3ファイルもいじらなくてはいけません。
何とかならないのかなぁ。
ということで、本日はここまでにしたいと思います。
もっと丁寧な解説がほしい人は公式サイトを見てね!
Googleが敗訴したというLinux特許について
あとでじっくり読もう。
Texas jury finds against Google in Linux patent case, determines damage award of $5,000,000
http://fosspatents.blogspot.com/2011/04/texas-jury-finds-against-google-in.html
特許番号5893120
http://www.google.com/patents/about?id=X4QXAAAAEBAJ&dq=5,893,120
銀河の歴史がまた1ページ
現実と異なる世界にダイブして遊ぶという妄想をしたことはないだろうか。
この甘美なる妄想はこれまでも幾多のクリエイターが挑戦している題材でもある。
小説でいえば極限まで現実と同化したネットゲーム世界での冒険を描いたソードアート・オンラインがある。
映画では、最近リメイクされたトロンがダイブする作品だ。
Microsoftの最新の研究を見ると、我々がそういったことに親しむのは
さほど遠くない未来であると予感させる。
PHPExcelで印刷用の改ページ設定について
PHPExcelで出力しているExcel5形式のxlsファイルの印刷について。
データが少し縦長だったので区切りのよいところで、
改ページを設定しようと悪戦苦闘。
jqGridのサイズを動的に変更する
表示しているブラウザのウインドウサイズを変更したときに、
自動的にjqGridのサイズも変わってほしいときってありますよね。
// #grid が対象のjqGridだとして $(window).bind('resize', function () { $('#gird').setGridWidth($(window).width() * 0.8) .setGridHeight($(window).height() * 0.8); }).trigger('resize');
ほかにもjqGridについて書いているのでよかったら見て行ってね!
jqGridについての記事一覧