0

現在、zf2でエンティティファイルの解析に取り組んでいます

エンティティを解析するための次のコードがあります:

$classname =  get_class($this->object);

$cmf = $this->em->getMetadataFactory();
$class = $cmf->getMetadataFor($classname);

$fields = $class->fieldMappings;

それは戻ります:

array
  'id' => 
    array
      'fieldName' => string 'id' (length=2)
      'type' => string 'integer' (length=7)
      'length' => null
      'precision' => int 0
      'scale' => int 0
      'nullable' => boolean false
      'unique' => boolean false
      'id' => boolean true
      'columnName' => string 'id' (length=2)
  'artist' => 
    array
      'fieldName' => string 'artist' (length=6)
      'type' => string 'string' (length=6)
      'length' => null
      'precision' => int 0
      'scale' => int 0
      'nullable' => boolean false
      'unique' => boolean false
      'columnName' => string 'artist' (length=6)
  'title' => 
    array
      'fieldName' => string 'title' (length=5)
      'type' => string 'string' (length=6)
      'length' => null
      'precision' => int 0
      'scale' => int 0
      'nullable' => boolean false
      'unique' => boolean false
      'columnName' => string 'title' (length=5)

カラムに新しいタイプを追加したい。たとえば、列を構成する場合は、uploadfieldまたはDatepickerです。

/**
 * @ORM\Column(type="string")
 * @type = 'datepicker'
 */
protected $publishdate;

クラスメタデータでその日付ピッカーを取得します(zend形式で入力要素を作成するため)

なにか提案を ?

によって修正されました

$reader = new \Doctrine\Common\Annotations\AnnotationReader();
$reflClass = new \ReflectionClass($classname);

foreach ($reflClass->getProperties() as $property) {
    var_dump($reader->getPropertyAnnotations($property));
}

この

namespace Admin\Model;

use Doctrine\ORM\Mapping as ORM,
    Admin\Scripts AS Scripts,
    Doctrine\ORM\Mapping\Annotation as Ano;

/**
 * @Annotation
 * @Target("PROPERTY")
 */
class sina extends \Doctrine\Common\Annotations\Annotation 
{
    /** @var string */
    public $sina;
}

/**
 * A news entity.
 *
 * @ORM\Entity
 * @ORM\Table(name="news")
 * @property string $artist
 * @property string $title
 * @property int $id
 */

class News extends Scripts\BaseObject 
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer");
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string")
     * @Admin\Model\sina(sina="sina")
     */
    protected $artist;

    /**
     * @ORM\Column(type="string")
     */
    protected $title;
}
4

1 に答える 1

0

あなたはそれを行うことができます。新しい注釈クラスを作成する必要があります。そのアノテーションをアノテーション レジストリに登録します。次に、LoadClassMetadata イベントのイベント リスナーを作成し、Reader クラスを使用して追加データを FieldMappings に挿入する必要があります。

このライブラリの一部は未完成で壊れていますが、Readonly ディレクトリを見てください。新しい注釈を読み取って挿入する方法を示します (この場合、フィールドを読み取り専用としてマークします。つまり、そのフィールドへの更新は許可されません)。SdsDoctrineExtensions

于 2012-05-18T04:20:04.563 に答える