新しいSyliusバージョン(1.0)でいくつかのエンティティを作成しようとしています。Sylius - 新しいエンティティでSlugableとTimestampableを実装する
私は自分のドキュメントを読んでいますが、少し怒っています。
新しいエンティティBook.php
を取得しました。
このエンティティは、三つのフィールド、著者、タイトルとコンテンツを得ました。
このエンティティでSlugableとTimestampableを使用して、アノテーションを使用してこのエンティティに2つの新しいフィールドを作成するにはどうすればよいですか?
私は、SlugableとTimestampableインターフェイスを拡張したInterface BookInterface.php
を作成しようとしていますが、明らかにDoctrineはインターフェイスのフィールドをマッピングしません。 Gedmo実体形質を使用
はBook.php
<?php
namespace Acme\SyliusBookBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Resource\Model\ResourceInterface;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Book
*
* @ORM\Table(name="book")
* @ORM\Entity(repositoryClass="App\SyliusBookBundle\Repository\BookRepository")
*/
class Book implements ResourceInterface
{
public function __construct()
{
$this->createdAt = new \DateTime();
}
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\ManyToOne(targetEntity="Sylius\Component\User\Model\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $author;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
*/
private $content;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
解決しよう
完璧に動作します。
Gedmo\Timestampable\Traits\TimestampableEntity;
その後、あなたのエンティティクラスにそれを使用する:
class Post implements ResourceInterface
{
use TimestampableEntity;
私はシリウスを知りませんが、 '/ ** @var \ DateTime @Gedmo \ Timestampable(on =" update ")... */private $ updated;' for timestamp 、および '/ ** @var string @Gedmo \ Slug(fields = {" name "})... */private $ slug;' slug? – lolmx
あなたのお返事ありがとうございます@lolmxしかし、私はSyliusとの良いプラクティスを学ぼうとしています:) –