Интернационализация Cakephp добавляет свойство _locale в содержании ассоциаций - PullRequest
0 голосов
/ 06 февраля 2019

Cakephp, кажется, добавляет свойство "_locale" на "содержать" ассоциации, это нормально, если это свойство находится внутри объекта Entity, но не в массиве, который содержит ассоциации, поскольку он разрушит много вещей, это толькопроисходит, когда язык не является языком по умолчанию, а Модель имеет поведение перевода, есть идеи, как это исправить / удалить?

[product_variations] => Array(
[0] => App\Model\Entity\ProductsVariation Object(
    [id] => 15
    [product_id] => 12
    [name] => Adults
    [description] => <p>Adult Ticket</p>
    [price_mode] => final
    [price] => 15
    [stock] => -1
    [weight] => 0
    [sku] => OITGXNRMARTPPDV
    [data] => 
    [active] => 1
    [enquire] => 
    [position] => 1
    [products_prices] => Array
        (
        )

    [_locale] => pt
    [[new]] => 
    [[accessible]] => Array
        (
            [*] => 1
        )

    [[dirty]] => Array
        (
        )

    [[original]] => Array
        (
        )

    [[virtual]] => Array
        (
        )

    [[errors]] => Array
        (
        )

    [[invalid]] => Array
        (
        )

    [[repository]] => ProductVariations
),
[_locale] => pt

)

Обновление: кажется, связано сиспользование метода «сопоставления» «Модель-> найти (...) -> сопоставление ('ProductVariations') ...

1 Ответ

0 голосов
/ 06 февраля 2019

Руководство объясняет это :

Итак, после сохранения вашей первой статьи вы можете сохранить перевод для нее, есть несколько способов сделать это.Первый - это установка языка непосредственно в сущности:

$article->_locale = 'es';
$article->title = 'Mi primer Artículo';
$this->Articles->save($article);

Так что помните об этом, когда будете изменять данные.Я не знаю, что произойдет, если вы удалите его, а затем сохраните запись или попытаетесь сделать что-то еще, связанное с этим.:)

Код, связанный с этим свойством , находится здесь в TranslateTrait .

Вы можете попытаться добавить средство форматирования результатов , вызвав formatResults () на запрос и отмените это свойство оттуда.

...