对于我的two,我需要进行两项改进:
删除特殊字符。
将带有重音符号的元音转换为没有重音符号的元音。
问题是我的网站正在生成带有以下标记的URL:
https://example.net/Toronto/product/férula-dental-limpieza-con-ul
https://cuponclub.net/Toronto/product/lifting-de-pestañas
URL中的那些特殊字符(例如“é”和“ñ”)对我来说往往是有问题的,原因有很多,例如将URL集成到我使用的API或共享链接时……
我正在使用CakePHP 1.2
。这就是我在代码中实现代码的方式:
class Product extends AppModel{
..........
..........
..........
var $actsAs = array(
'Sluggable' => array(
'label' => array(
'short_name'
),
'length' => 30,
'overwrite' => false
)
);
..........
..........
..........
}
在数据库中,'short_name'
是用于生成条块的字段。没有CakePHP,PHP已经提供了内置功能,例如str_replace()
和preg_replace()
,并且通过使用这些功能和常规表达式(例如[^A-Za-z0-9\-]
),我可以在替换所有空格后删除所有特殊字符带连字符。但是由于我使用的是CakePHP
,因此需要使用其语法。我正在阅读https://github.com/msadouni/cakephp-sluggable-plugin,发现了有关label
的以下信息:
label :(数组|字符串,可选)设置为包含以下内容的字段名称 从何处生成段子的字符串,或一组要生成的字段名称 连接生成子弹。默认值:标题
我可以将label
视为字符串,并对其应用str_replace()
和preg_replace()
之类的功能吗?
答案 0 :(得分:3)
鉴于您正在使用的插件在过去10年中没有任何更新,我可以肯定地说,自行维护是您的最佳选择-如果您不想{{3} },也就是说,这都不难做到
因此,只需对其进行分叉并进行必要的更改或创建自定义行为即可。我还建议看看最新的CakePHP如何处理此问题,请参阅create a behavior from scratch的源代码。如果您的PHP安装支持它,那么您可能需要向后移植,即利用INTL扩展名提供的\Cake\Utility\Text::slug()
。