Присвойте таблицам удобочитаемый и динамически извлекаемый заголовок или псевдоним в CakePHP 3 - PullRequest
0 голосов
/ 28 сентября 2018

В целях создания динамических меню для CMS мне нужно иметь возможность извлекать ассоциации как данных моделей, так и для каждой из этих связанных моделей строку, которая представляет ее в удобоваримой для человека форме.Так, например, если у меня есть таблица Articles, которая имеет много Hostedimages, я могу динамически получать эту информацию об ассоциации через

$this->Articles->associations()->keys()

Но это дает мне строку Hostedimages, тогда как, конечно, для интерфейса я хочу Hosted Images.

Я предполагаю, что могу хранить эту строку где-то в Hostedimages модели.Кто-нибудь знает, как этого добиться?

1 Ответ

0 голосов
/ 28 сентября 2018

keys() должен возвращать все имена в нижнем регистре IIRC, то есть hostedimages, именно так коллекции ассоциаций используют их внутренне для обеспечения уникальности.

Конечно, вы можете присвоить значение объекту таблицы, ноТаблица может использоваться в нескольких ассоциациях, поэтому она не будет работать слишком хорошо, и таблице также не нужно ничего знать о уровне представления.

В идеале вы должны придерживаться соглашений об именах CakePHP ииспользуйте имена в верблюжьей оболочке, то есть имя вашей ассоциации / таблицы HostedImages, тогда вы можете, например, использовать инфлектор на имени ассоциации:

$associations = $this->Articles->associations();
$readableNames = collection($associations)
    ->map(function (\Cake\ORM\Association $association) {
        return \Cake\Utility\Inflector::humanize(
            \Cake\Utility\Inflector::underscore($association->getName())
        );
    })
    ->toList();

См. также

...