Определите единственное правило в начальной загрузке для Inflector - PullRequest
5 голосов
/ 31 марта 2012

Я использую CakePHP 2.1 и мне нужно определить правило Inflector для слова «Программное обеспечение», потому что CakePHP преобразует все ссылки во множественную форму «Программное обеспечение», что неверно. Cake ищет SoftwaresController и таблицу с именем Softwares.

Я знаю, как создать правило в загрузочном ремешке, и прочесть эту ссылку на документацию.

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?

EDIT:

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

Я попытался добавить это правило, которое работает для SoftwareController, но Cake жалуется, что не может найти таблицу Softwares, которая на самом деле называется «Software». Я чувствую, что я близко, но все еще что-то упускаю из-за того, как это работает.

1 Ответ

8 голосов
/ 01 апреля 2012

Вы просто должны знать, где искать (или искать) в книге: 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')
));
...