我正在使用Propel中的sluggable
行为与我的CMS / Framework一起工作。
奇怪的是,如果你改变页面上的其他内容,除了slug之外,slug将使用看似父元素的值自动重新生成,即
从/slug
到id-3-parentid-2-keywords-null-templateid-1-publishdate-null-slug-slug-sortablerank-2-createdat-null-updatedat-null-pagei18ns-pagei18n_0-id-3-locale-en_gb-title-tsadf-description-null-content-p-ssadf-p-page-recursion-pagei18n_1-id-3-locale-fr_fr-title-a
这是相当奇怪的。
到目前为止我找到的唯一解决方案是简单地将setSlug调用为随机值,然后设置正确的值。
$page->setSlug('x');
$page->setSlug($this->request->post->get('slug'));
和我的架构:
<table name="page" phpName="Page">
<!-- Columns -->
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
<column name="parent_id" type="integer" required="false" />
<column name="title" type="varchar" size="255" required="true" />
<column name="description" type="varchar" size="255" required="false" />
<column name="keywords" type="varchar" size="255" required="false" />
<column name="content" type="longvarchar" required="false" />
<column name="template_id" type="integer" required="false" />
<column name="publish_date" type="date" required="false" />
<!-- Behaviors -->
<behavior name="i18n">
<parameter name="i18n_columns" value="title, description, content" />
<parameter name="default_locale" value="en_GB" />
</behavior>
<behavior name="sluggable">
<parameter name="permanent" value="true" />
</behavior>
<behavior name="sortable" />
<behavior name="timestampable" />
<!-- Foreign Keys -->
<foreign-key foreignTable="page_template">
<reference local="template_id" foreign="id"/>
</foreign-key>
<foreign-key foreignTable="page">
<reference local="parent_id" foreign="id"/>
</foreign-key>
</table>
注意:我尝试过使用和不使用永久性参数。
任何想法都是谁?