Добрый день.
У меня есть сущность Page. С ней связана сущность Seo связью OneToOne. Я хочу сделать переводы для Страниц и сразу же для Сео. Но сущность СЕО не обновляется при смене языка(остается в главном языке, хотя Locale меняется на en), с данными для страницы все в порядке, переводятся как нужно.
<?php
/**
* Page
*
* @ORM\Table(name="page")
* @ORM\Entity(repositoryClass="App\AdminBundle\Repository\PageRepository")
* @Gedmo\TranslationEntity(class="App\AdminBundle\Entity\Translation\PageTranslation")
*/
class Page implements Translatable
{
/**
* @Gedmo\Locale
*/
private $locale;
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
$this->getSeo()->setTranslatableLocale($locale);
}
/**
* @ORM\OneToMany(
* targetEntity="App\AdminBundle\Entity\Translation\PageTranslation",
* mappedBy="object",
* cascade={"persist", "remove"}
* )
*/
private $translations;
public function __construct()
{
$this->translations = new ArrayCollection();
}
public function getTranslations()
{
return $this->translations;
}
public function addTranslation(PageTranslation $t)
{
if (!$this->translations->contains($t)) {
$this->translations[] = $t;
$t->setObject($this);
}
}
/**
* @var string
*
* @Gedmo\Translatable
* @ORM\Column(name="title", type="string", length=255)
* @Assert\NotBlank(
* message="not_blank_message"
* )
*/
private $title;
/**
* @ORM\OneToOne(targetEntity="TE\SeoBundle\Entity\Seo", cascade={"persist","remove","refresh"}, inversedBy="pages")
* @ORM\JoinColumn(onDelete="SET NULL")
*/
private $seo;
}
Сущность SEO
<?php
use Gedmo\Mapping\Annotation as Gedmo;
/**
* Seo
*
* @ORM\Table(name="te_seo")
* @ORM\Entity(repositoryClass="TE\SeoBundle\Repository\SeoRepository")
* @Gedmo\TranslationEntity(class="TE\SeoBundle\Entity\SeoTranslation")
*/
class Seo
{
/**
* @Gedmo\Locale
*/
private $locale;
public function setTranslatableLocale($locale)
{
$this->locale = $locale;
}
/**
* @ORM\OneToMany(
* targetEntity="TE\SeoBundle\Entity\SeoTranslation",
* mappedBy="object",
* cascade={"persist", "remove"}
* )
*/
private $translations;
public function __construct()
{
$this->translations = new ArrayCollection();
}
public function getTranslations()
{
return $this->translations;
}
public function addTranslation(SeoTranslation $t)
{
if (!$this->translations->contains($t)) {
$this->translations[] = $t;
$t->setObject($this);
}
}
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=128)
* @Gedmo\Translatable
*/
protected $title;
/**
* Remove translation
*
* @param \TE\SeoBundle\Entity\SeoTranslation $translation
*/
public function removeTranslation(\TE\SeoBundle\Entity\SeoTranslation $translation)
{
$this->translations->removeElement($translation);
}
}
Сущность для переводов СЕО
<?php
namespace TE\SeoBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation;
/**
* @ORM\Table(name="te_seo_translations",
* uniqueConstraints={@ORM\UniqueConstraint(name="lookup_unique_idx", columns={
* "locale", "object_id", "field"
* })}
* )
* @ORM\Entity(repositoryClass="Gedmo\Translatable\Entity\Repository\TranslationRepository")
*/
class SeoTranslation extends AbstractTranslation{
/**
* Convenient constructor
*
* @param string $locale
* @param string $field
* @param string $value
*/
public function __construct($locale, $field, $value)
{
$this->setLocale($locale);
$this->setField($field);
$this->setContent($value);
}
/**
* @ORM\ManyToOne(targetEntity="TE\SeoBundle\Entity\Seo", inversedBy="translations")
* @ORM\JoinColumn(name="object_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $object;
}
На всякий случай форма для Страниц
<?php
class PageType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title',TextType::class)
->add('seo',SeoType::class)
;
}
}
В общем, это я закосячил. Почему то не вставил @Gedmo\Translatable в СЕО для полей, которые должны переводиться. А так вариант полностью рабочий. Я его сейчас исправлю
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Итак, есть сайт, на нем ajax-форма поиска информации с рекапчей от гугла (без галочки), ответ формы мне нужно спарсить
в чём моя ошибка, не выводит форму редактирования урока любого
Кто-то знает где можно посмотреть пример реализации записи видео через веб камеру средствами HTML5 с последующей отправкой в виде файла на сервер...