Symfony 2のSluggable、Timestampableなど

2番目のSymfonyでは、Doctrineの拡張機能を使用してビヘイビアをモデルに接続できます。 1つのバンドルStofDoctrineExtensionsBundleを使用すると、 SluggableTranslatableTimestampableLoggable、およびTreeの動作を使用できます。



上記の拡張機能により、通常のリンクを読み取り可能(スラグ可能)に変換し、国際化(翻訳可能)の簡単なサポートを提供し、バージョン管理(ログ可能)を作成し、エンティティの作成および更新の日付を作成して自動的に入力(タイムスタンプ可能)し、ツリーのようなデータストレージ構造(ツリー)を整理できます。



設置



最初に行うことは、Doctrine拡張機能とそのバンドルをSymfonyにインストールすることです。 次の行をdepsファイルに追加します。



[gedmo-doctrine-extensions] git=git://github.com/l3pp4rd/DoctrineExtensions.git [DoctrineExtensionsBundle] git=git://github.com/stof/StofDoctrineExtensionsBundle.git target=/bundles/Stof/DoctrineExtensionsBundle
      
      





設置



 $ bin/vendors install
      
      





ベンダーのインストールで問題が発生した場合は、 ベンダーディレクトリからすべてを削除して、もう一度やり直してください。



次の行をapp / autoload.phpに追加します。



 $loader->registerNamespaces(array( // ... 'Stof' => __DIR__.'/../vendor/bundles', 'Gedmo' => __DIR__.'/../vendor/gedmo-doctrine-extensions/lib', // ... ));
      
      





また、インストールしたパッケージをapp / AppKernel.phpに追加します。



 public function registerBundles() { return array( // ... new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), // ... ); }
      
      





その後、 app / config / config.yml設定に書き込みます (リスナーの追加、利用可能なStofDoctrineExtensionsリスナーに関する追加情報):



 #... doctrine: orm: auto_mapping: true stof_doctrine_extensions: orm: default: sluggable: true timestampable: true #...
      
      





キャッシュを消去することを忘れないでください:



 $ php app/console cache:clear
      
      





使用する



例としてSlugableとTimestampableの使用を検討してください。



 <?php namespace Entity; use Gedmo\Mapping\Annotation as Gedmo; //  Gedmo use Doctrine\ORM\Mapping as ORM; /** * @ORM\Table(name="article") * @ORM\Entity */ class Article { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(length=64) */ private $title; /** * @Gedmo\Slug(fields={"title"}) * @ORM\Column(length=128, unique=true) */ private $slug; /** * @var datetime $created * * @Gedmo\Timestampable(on="create") * @ORM\Column(type="date") */ private $created; /** * @var datetime $updated * * @ORM\Column(type="datetime") * @Gedmo\Timestampable(on="update") */ private $updated;
      
      





Doctrineはあなたのために残りを生成します:



 $ app/console doctrine:generate:entities
      
      





SluggableTranslatableTimestampableLoggableTreeを使用する他の例も見ることができます。



翻訳者のメモ



翻訳は単語ごとではありませんが、意味は完全に伝えられています。 また、この記事にはちょっとしたギャグがありますが、非常に便利なようです。



組み合わせたフォームとデフォルトも参照してください。



All Articles