SYMFONY2 Sluggable 最小配置
SYMFONY2 Sluggable minimal configuration
我安装了与 link 相同的 StofDoctrineExtensionsBundle。
相比之下,页面呈现非常缓慢,因为大约需要 5 分钟。我只需要 sluggable 用户实体 (FOSUSERBUNDLE) 中的功能。我认为如果没有一些元素它应该工作得更快。
运行 的最低配置是多少只适用于此软件包。是否需要所有映射(watch link)?
我需要config.yml示例。
编辑
添加监听器后,我的 config.yml 看起来:
...
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
gedmo_translatable:
type: annotation
prefix: Gedmo\Translatable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_translator:
type: annotation
prefix: Gedmo\Translator\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
alias: GedmoTranslator # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_loggable:
type: annotation
prefix: Gedmo\Loggable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
alias: GedmoLoggable # (optional) it will default to the name set for the mappingmapping
is_bundle: false
gedmo_tree:
type: annotation
prefix: Gedmo\Tree\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
alias: GedmoTree # (optional) it will default to the name set for the mapping
is_bundle: false
...
stof_doctrine_extensions:
class:
sluggable: ~
...
我的 slugg 实体:
namespace AppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* Profile
*
* @ORM\Table(name="profile")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProfileRepository")
*/
class Profile
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=150, nullable=true)
*/
private $name;
/**
* @Gedmo\Slug(fields={"title", "name"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
/**
* @var string
*
* @ORM\Column(name="city", type="string", length=150, nullable=true)
*/
private $city;
/**
* @var string
*
* @ORM\Column(name="voivodeship", type="string", length=50, nullable=true)
*/
private $voivodeship;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="category", type="string", length=100, nullable=true)
*/
private $category;
/**
*
* @ORM\OneToOne(targetEntity="User", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
*/
protected $user;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Profile
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set city
*
* @param string $city
*
* @return Profile
*/
public function setCity($city)
{
$this->city = $city;
return $this;
}
/**
* Get city
*
* @return string
*/
public function getCity()
{
return $this->city;
}
/**
* Set voivodeship
*
* @param string $voivodeship
*
* @return Profile
*/
public function setVoivodeship($voivodeship)
{
$this->voivodeship = $voivodeship;
return $this;
}
/**
* Get voivodeship
*
* @return string
*/
public function getVoivodeship()
{
return $this->voivodeship;
}
/**
* Set description
*
* @param string $description
*
* @return Profile
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set category
*
* @param string $category
*
* @return Profile
*/
public function setCategory($category)
{
$this->category = $category;
return $this;
}
/**
* Get category
*
* @return string
*/
public function getCategory()
{
return $this->category;
}
/**
* Set user
*
* @param \AppBundle\Entity\User $user
*
* @return Profile
*/
public function setUser(\AppBundle\Entity\User $user = null)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \AppBundle\Entity\User
*/
public function getUser()
{
return $this->user;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
}
现在网站没有生成。刷新数据库但没有任何帮助
您只需要激活 sluggable 侦听器即可:
# app/config/config.yml
stof_doctrine_extensions:
class:
sluggable: ~
然后创建你的 slug 属性 :
<?php
namespace Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="articles")
* @ORM\Entity
*/
class Entity
{
...
/**
* @Gedmo\Slug(fields={"username"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
...
}
我已经根据 Alsatian 的回答修改了监听器定义,现在可以使用了。
# app/config/config.yml
stof_doctrine_extensions:
default_locale: en
orm:
default:
tree: false
timestampable: false
sluggable: true
translatable: false
我安装了与 link 相同的 StofDoctrineExtensionsBundle。 相比之下,页面呈现非常缓慢,因为大约需要 5 分钟。我只需要 sluggable 用户实体 (FOSUSERBUNDLE) 中的功能。我认为如果没有一些元素它应该工作得更快。
运行 的最低配置是多少只适用于此软件包。是否需要所有映射(watch link)?
我需要config.yml示例。
编辑 添加监听器后,我的 config.yml 看起来:
...
orm:
default_entity_manager: default
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
gedmo_translatable:
type: annotation
prefix: Gedmo\Translatable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
alias: GedmoTranslatable # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_translator:
type: annotation
prefix: Gedmo\Translator\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
alias: GedmoTranslator # (optional) it will default to the name set for the mapping
is_bundle: false
gedmo_loggable:
type: annotation
prefix: Gedmo\Loggable\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity"
alias: GedmoLoggable # (optional) it will default to the name set for the mappingmapping
is_bundle: false
gedmo_tree:
type: annotation
prefix: Gedmo\Tree\Entity
dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
alias: GedmoTree # (optional) it will default to the name set for the mapping
is_bundle: false
...
stof_doctrine_extensions:
class:
sluggable: ~
...
我的 slugg 实体:
namespace AppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* Profile
*
* @ORM\Table(name="profile")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProfileRepository")
*/
class Profile
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=150, nullable=true)
*/
private $name;
/**
* @Gedmo\Slug(fields={"title", "name"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
/**
* @var string
*
* @ORM\Column(name="city", type="string", length=150, nullable=true)
*/
private $city;
/**
* @var string
*
* @ORM\Column(name="voivodeship", type="string", length=50, nullable=true)
*/
private $voivodeship;
/**
* @var string
*
* @ORM\Column(name="description", type="text", nullable=true)
*/
private $description;
/**
* @var string
*
* @ORM\Column(name="category", type="string", length=100, nullable=true)
*/
private $category;
/**
*
* @ORM\OneToOne(targetEntity="User", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
*/
protected $user;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return Profile
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set city
*
* @param string $city
*
* @return Profile
*/
public function setCity($city)
{
$this->city = $city;
return $this;
}
/**
* Get city
*
* @return string
*/
public function getCity()
{
return $this->city;
}
/**
* Set voivodeship
*
* @param string $voivodeship
*
* @return Profile
*/
public function setVoivodeship($voivodeship)
{
$this->voivodeship = $voivodeship;
return $this;
}
/**
* Get voivodeship
*
* @return string
*/
public function getVoivodeship()
{
return $this->voivodeship;
}
/**
* Set description
*
* @param string $description
*
* @return Profile
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set category
*
* @param string $category
*
* @return Profile
*/
public function setCategory($category)
{
$this->category = $category;
return $this;
}
/**
* Get category
*
* @return string
*/
public function getCategory()
{
return $this->category;
}
/**
* Set user
*
* @param \AppBundle\Entity\User $user
*
* @return Profile
*/
public function setUser(\AppBundle\Entity\User $user = null)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \AppBundle\Entity\User
*/
public function getUser()
{
return $this->user;
}
/**
* Get slug
*
* @return string
*/
public function getSlug()
{
return $this->slug;
}
}
现在网站没有生成。刷新数据库但没有任何帮助
您只需要激活 sluggable 侦听器即可:
# app/config/config.yml
stof_doctrine_extensions:
class:
sluggable: ~
然后创建你的 slug 属性 :
<?php
namespace Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="articles")
* @ORM\Entity
*/
class Entity
{
...
/**
* @Gedmo\Slug(fields={"username"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
...
}
我已经根据 Alsatian 的回答修改了监听器定义,现在可以使用了。
# app/config/config.yml
stof_doctrine_extensions:
default_locale: en
orm:
default:
tree: false
timestampable: false
sluggable: true
translatable: false