PHPackages                             inisire/utils - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. inisire/utils

ActiveUtils[Utility &amp; Helpers](/categories/utility)

inisire/utils
=============

Set of useful code

06.5kPHP

Since Aug 11Pushed 9mo agoCompare

[ Source](https://github.com/iNiSiRe/utils)[ Packagist](https://packagist.org/packages/inisire/utils)[ RSS](/packages/inisire-utils/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Utils
=====

[](#utils)

Translation
-----------

[](#translation)

### Translation CRUD

[](#translation-crud)

Entity должна выглядеть следующим образом: имплементирован TranslatableEntityInterface и определен метод getTranslatableFields. Возможно использовать PrivateDev\\Utils\\Entity\\TranslationEntityTrait для добавления поля $translation. После этого, при использовании PrivateDev\\Utils\\Controller\\CRUD(L)Controller все переводы будут сохранятся в связанную сущность PrivateDev\\Utils\\Entity\\Translation

```
namespace PageBundle\Entity;

use PrivateDev\Utils\Entity\TranslatableEntityInterface;
use PrivateDev\Utils\Entity\Translation;
use Doctrine\ORM\Mapping as ORM;
use PrivateDev\Utils\Entity\EnableEntityTrait;
use PrivateDev\Utils\Entity\TimestampEntityTrait;
use PrivateDev\Utils\Entity\TranslationEntityTrait;
use Swagger\Annotations\Definition;
use Swagger\Annotations\Property;

/**
 * @Definition()
 *
 * @ORM\Table(name="pages")
 * @ORM\Entity(repositoryClass="PageBundle\Repository\PageRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class Page implements TranslatableEntityInterface
{
    use TimestampEntityTrait;
    use EnableEntityTrait;
    use TranslationEntityTrait;

    public function getTranslatableFields()
    {
        return ['title'];
    }

    /**
     *
     * @var string
     *
     * @Property()
     *
     */
    private $title;   // не должна быть @ORM\Column все переводы сохраняются для локали в Translation

    /**
     * Set title
     *
     * @param string $title
     *
     * @return Page
     */
    public function setTitle($title, $language = null)
    {
        if ($language) {
            //метод в TranslationEntityTrait устанавливает перевод для поля вTranslation
            $this->setTranslationForField('title', $title, $language);
        } else {
            $this->title = $title;
        }

        return $this;
    }

    /**
     * Get title
     *
     * @param null $language
     *
     * @return string
     */
    public function getTitle($language = null)
    {
        if ($language) {
            //метод в TranslationEntityTrait достает перевод для поля из Translation
            $title = $this->getTranslationForField('title', $language);
        } else {
            $title = $this->title;
        }

        return $title;
    }

}
```

### Translation transformer

[](#translation-transformer)

Для трансформера необходимо имплементировать TranslatableTransformerInterface, тогда при использовании PrivateDev\\Utils\\JsonёTransformableJsonResponseBuilder текущий язык будет установлен в трансформер. Можно использовать PrivateDev\\Utils\\Fractal\\TranslatableTransformerTrait для определения $language и его акцессоров

```
