У меня есть страница сущности с полями:
pagelocaleid (PK), описание, содержание, локаль, перевод и pageid (FK).
Моя сущность:
<?php
namespace DX\MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* Pagelocale
*
* @ORM\Table(name="pageLocale", indexes={@ORM\Index(name="fk_pageLocale_page1_idx", columns={"pageID"})})
* @ORM\Entity(repositoryClass="DX\MyBundle\Repository\PagelocaleRepository")
* @ORM\HasLifecycleCallbacks
*/
class Pagelocale
{
/**
* @var string
*
* @ORM\Column(name="description", type="text", length=65535, nullable=true)
*/
private $description;
/**
* @var string
*/
private $descriptionEN;
/**
* @var string
*
* @ORM\Column(name="content", type="text", length=65535, nullable=true)
*/
private $content;
/**
* @var string
*/
private $contentEN;
/**
* @var string
*
* @ORM\Column(name="locale", type="string", length=5, nullable=true)
*/
private $locale;
/**
* @var boolean
*
* @ORM\Column(name="translated", type="boolean", nullable=true)
*/
private $translated;
/**
* @var integer
*
* @ORM\Column(name="pageLocaleID", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $pagelocaleid;
/**
* @var \DX\MyBundle\Entity\Page
*
* @ORM\ManyToOne(targetEntity="DX\MyBundle\Entity\Page")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="pageID", referencedColumnName="pageID")
* })
*/
private $pageid;
/**
* @var string
*/
private $tag;
/**
* Set tag
*
* @param string $tag
* @return Articlelocale
*/
public function setTag($tag)
{
if($this->pageid)
{
$this->pageid->setTag($tag);
}
else
{
$this->tag = $tag;
}
return $this;
}
/**
* Get tag
*
* @return string
*/
public function getTag()
{
if($this->pageid)
{
return $this->pageid->getTag();
}
else
{
return $this->tag;
}
}
/**
* Set description
*
* @param string $description
* @return Pagelocale
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set descriptionEN
*
* @param string $descriptionEN
* @return Pagelocale
*/
public function setDescriptionEN($descriptionEN)
{
$this->descriptionEN = $descriptionEN;
return $this;
}
/**
* Get descriptionEN
*
* @return string
*/
public function getDescriptionEN()
{
return $this->descriptionEN;
}
/**
* Set content
*
* @param string $content
* @return Pagelocale
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content
*
* @return string
*/
public function getContent()
{
return $this->content;
}/**
* Set contentEN
*
* @param string $contentEN
* @return Pagelocale
*/
public function setContentEN($contentEN)
{
$this->contentEN = $contentEN;
return $this;
}
/**
* Get contentEN
*
* @return string
*/
public function getContentEN()
{
return $this->contentEN;
}
/**
* Set locale
*
* @param string $locale
* @return Pagelocale
*/
public function setLocale($locale)
{
$this->locale = $locale;
return $this;
}
/**
* Get locale
*
* @return string
*/
public function getLocale()
{
return $this->locale;
}
/**
* Set translated
*
* @param boolean $translated
* @return Pagelocale
*/
public function setTranslated($translated)
{
$this->translated = $translated;
return $this;
}
/**
* Get translated
*
* @return boolean
*/
public function getTranslated()
{
return $this->translated;
}
/**
* Get pagelocaleid
*
* @return integer
*/
public function getPagelocaleid()
{
return $this->pagelocaleid;
}
/**
* Set pageid
*
* @param \DX\MyBundle\Entity\Page $pageid
* @return Pagelocale
*/
public function setPageid(\DX\MyBundle\Entity\Page $pageid = null)
{
$this->pageid = $pageid;
return $this;
}
}
Я использую Sonata Admin Bundle, но в данном случае это не имеет значения.
Как вы можете видеть в моей сущности, я добавил вручную contentEN а также descriptionEN потому что я хочу содержание & описание на 2 языках.
И я хочу иметь возможность сделать это в одной форме, а не в 2 шага (создать для каждого языка контента).
Теперь у меня есть в моей форме:
$formMapper
->add('tag', 'text', array('label' => 'Tag'))
->add('description', 'text', array('label' => 'Beschrijving'))
->add('descriptionEN', 'text', array('label' => 'Beschrijving Engels'))
->add('content', 'textarea', array('label' => 'Tekst', 'attr' => array('class' => 'ckeditor'), 'help' =>
'My help text.'))
->add('contentEN', 'textarea', array('label' => 'Tekst Engels', 'attr' => array('class' => 'ckeditor'), 'help' =>
'My help text.'))
;
Я могу создать 2 разных объекта и установить локаль, это не проблема. Но когда я хочу редактировать их contentEN & descriptionEN логически не заполнены. Как я могу убедиться, что я получаю описание и содержание где локаль = .. ?
ОБНОВИТЬ:
Моя структура БД:
Так что у меня нет страницы таблицы, локаль & pagelocale.
Задача ещё не решена.
Других решений пока нет …