fag*_*gyi 4 php doctrine slug symfony doctrine-orm
我有一个正在运行的博客,但我对漂亮的网址的想法有点晚了。
我不想使用 slugable 等捆绑包,因为我没有太多时间阅读文档并实现它们。
是否有可能在条令执行到数据库之前到达实体的字段并从中生成段头?
我在实体中想到了一个简单的解决方案,例如:
public function __construct() {
$this->setPostedAt(new \DateTime());
$this->setSlug();
}
public function setSlug(){
$tmpslug = (string)$this->id."-";
$tmpslug .= $this->slugify($this->title);
$this->slug = $tmpslug;
}
Run Code Online (Sandbox Code Playgroud)
然而,这将不起作用,因为调用 constructor() 时 id 和 title 字段为空。
有没有不需要实现新扩展的快速解决方案?
谢谢!
我不认为 Sluggable(来自 DoctrineExtensions)会比重新发明就绪轮花费更多时间。我会使用它,需要 10 分钟才能准备好使用。
"stof/doctrine-extensions-bundle": "~1.1@dev"composer.jsonconfig.yml:配置:
stof_doctrine_extensions:
orm:
default:
uploadable: false
sluggable: true
timestampable: false
translatable: false
tree: false
blameable: false
loggable: false
sortable: false
softdeleteable: false
Run Code Online (Sandbox Code Playgroud)
slug将字段和 getter/setter添加到您的实体代码:
private $slug;
public function getSlug() {...}
public function setSlug($slug) {...}
Run Code Online (Sandbox Code Playgroud)
xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"到doctrine-mappingENTITY.orm.xml 中的部分(如果您使用的是 xml)代码:
<field name="slug" column="slug" type="string">
<gedmo:slug fields="title(OR_YOUR_DESIRED_FIELD)" unique="true" updatable="true" />
</field>
Run Code Online (Sandbox Code Playgroud)
就是这样,你可以忘记它,你不需要设置,事件监听器会关心它。
| 归档时间: |
|
| 查看次数: |
4193 次 |
| 最近记录: |