0

私はSymfonyから始めており、エンティティ「Post」があります

<?php

namespace My\BackendBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
 * Post
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Post
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255)
     */
    private $title;

    /**
     * @var string
     *
     * @Gedmo\Slug(fields={"title"})
     * @ORM\Column(type="string", length=255, unique=true)
     */
    private $slug;

    /**
     * @var string
     *
     * @ORM\Column(name="text", type="text")
     */
    private $text;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set title
     *
     * @param string $title
     * @return Post
     */
    public function setTitle($title)
    {
        $this->title = $title;

        return $this;
    }

    /**
     * Get title
     *
     * @return string 
     */
    public function getTitle()
    {
        return $this->title;
    }

    /**
     * Set text
     *
     * @param string $text
     * @return Post
     */
    public function setText($text)
    {
        $this->text = $text;

        return $this;
    }

    /**
     * Get text
     *
     * @return string 
     */
    public function getText()
    {
        return $this->text;
    }

    /**
     * Set slug
     *
     * @param string $slug
     * @return Post
     */
    public function setSlug($slug)
    {
        $this->slug = $slug;

        return $this;
    }

    /**
     * Get slug
     *
     * @return string 
     */
    public function getSlug()
    {
        return $this->slug;
    }
}

データベースにテーブルを生成しました:

app/console doctrine:schema:update --force

CRUD パネル:

app/console doctrine:generate:crud

オプション付き:

Entity: MyBackendBundle:Post
"write" action: yes

しかし、ご覧のとおり、「slug」フィールドがあり、Doctrine に自動生成させたいと考えています。ただし、「/post/new」のデフォルトの CRUD パネルには、3 つのフィールドすべて (タイトル、スラッグ、テキスト) の入力があります。そして、解決策を何時間も探した後、私にできることは、My/BackendBundle/Form/PostType.php から「スラッグ」入力を手動で削除することだけです。

私が何か間違ったことをしているのか、それとも単にそのように機能しているのかわかりませんか? Sluggable 動作は、エンティティを手動で追加する場合にうまく機能します (タイトルとテキストで新しい Post() を作成し、$manager->flush() を実行することにより)。

私の /app/config/config.yml ファイル:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }

framework:
    #esi:             ~
    translator:      { fallback: %locale% }
    secret:          %secret%
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    default_locale:  "%locale%"
    trusted_proxies: ~
    session:         ~
    fragments:       ~

# Twig Configuration
twig:
    debug:            %kernel.debug%
    strict_variables: %kernel.debug%

# Assetic Configuration
assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        cssrewrite: ~
        #closure:
        #    jar: %kernel.root_dir%/Resources/java/compiler.jar
        #yui_css:
        #    jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar

# Doctrine Configuration
doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
        # if using pdo_sqlite as your database driver, add the path in parameters.yml
        # e.g. database_path: %kernel.root_dir%/data/data.db3
        # path:     %database_path%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
        mappings:
            StofDoctrineExtensionsBundle: false

stof_doctrine_extensions:
    default_locale: en_US
    orm:
        default:
            sluggable: true


# Swiftmailer Configuration
swiftmailer:
    transport: %mailer_transport%
    host:      %mailer_host%
    username:  %mailer_user%
    password:  %mailer_password%
    spool:     { type: memory }

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: My\UserBundle\Entity\User

それが正常であり、手動で行う必要がある場合は、簡単な確認が素晴らしいでしょう.

4

1 に答える 1

1

app/console doctrine:generate:crudコマンドは、すべてのエンティティ プロパティのフィールドを生成するgenerate:doctrine:formコマンドを使用します。

そうです、不要なフィールドをフォームから削除するか、 AdmigeneratorGeneratorBundle などのより高度なジェネレーターを使用する必要があります

于 2013-06-22T19:29:02.323 に答える