php - 在 Bootstrap 中为 Inflector 定义一个奇异规则

标签 php cakephp inflector

我正在使用 CakePHP 2.1 并且需要为单词“Software”定义一个变形器规则,因为 CakePHP 正在将所有引用转换为复数形式“Softwares”,这是不正确的。 Cake 正在寻找 SoftwaresController 和一个名为 Softwares 的表。

我确实知道在 Bootstrap 中创建规则,并阅读此文档引用。

http://book.cakephp.org/2.0/en/development/configuration.html#inflection-configuration

我还查看了 lib/Cake/Inflector.php 文件,但无法弄清楚定义规则的语法。它看起来有点像正则表达式。以下是一些规则示例。

        '/(s)tatus$/i' => '\1\2tatuses',
        '/(quiz)$/i' => '\1zes',
        '/^(ox)$/i' => '\1\2en',
        '/([m|l])ouse$/i' => '\1ice',
        '/(matr|vert|ind)(ix|ex)$/i' => '\1ices',
        '/(x|ch|ss|sh)$/i' => '\1es',

定义软件奇异变形器规则的正确代码是什么?

编辑:

 Inflector::rules('singular', array('rules'=>array('/software/'=>'software'),'irregular'=>array('software'=>'software'),'uninflected'=>array('software')));

我尝试添加此规则,该规则适用于 SoftwareController,但 Cake 提示它找不到 Softwares 表,该表实际上名为“Software”。我觉得我很接近,但仍然缺少一些关于它是如何工作的。

最佳答案

您只需要知道在书中的何处查找(或搜索): http://book.cakephp.org/2.0/en/development/configuration.html#inflection-configuration

你的情况

Inflector::rules('singular', array(
    'uninflected' => array('software')
));
Inflector::rules('plural', array(
    'uninflected' => array('software')
));

关于php - 在 Bootstrap 中为 Inflector 定义一个奇异规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959152/

相关文章:

cakePHP: $this->Form->input() - 如何设置选择默认选项

php - Cakephp 命名约定异常(exception)

php - Symfony 表单 - 密码类型

php - 'session.gc-maxlifetime' 始终为默认值

php - 将 composer.json 放在 CakePHP 安装的根目录中

cakephp - 在 CakePHP 1.3 中定义变形规则的合适位置在哪里?

php - 系统打卡 PHP, Ajax, Mysql

php - 如何在codeigniter中从动态表插入多个数据到mysql

caching - 如何在 CakePHP 中的模型函数内使用助手