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を使用する他の例も見ることができます。

翻訳者のメモ


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

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

Source: https://habr.com/ru/post/J134258/


All Articles