[FLOW3-general] Problem With Update
"Christian Müller (FLOW3 Team)"
christian.mueller at typo3.org
Tue Apr 3 10:03:34 CEST 2012
Just to wrap that up, we discussed the problems in IRC and it was just a
bit of cleanup in Model, Controller and Template needed.
If you have further questions come back here or in the IRC channel.
Cheers,
Christian
On 02/04/12 15:11, daniel andrew wrote:
> Hello,
>
> I have a problem with update in flow3. Basicly i have 2 tables in MySql.
> The first table called translatiounit and it has fields: translationsource,
> translationkey, translationpackage. The second table called
> translationtarget and it has fields: translationtarget,
> translationlanguage, translationapproval, comment, translationunit.
>
> The problem is, i have to update those fields from different table in 1
> form. How to do that? should i create new method in the repository or is
> there any other better way to do that? this is my code in controller to do
> update:
>
> /**
> * create action
> * @param \Somea\Translation\Domain\Model\TranslationUnit $unit A new unit
> to add
> * @param \Somea\Translation\Domain\Model\TranslationPackage
> $package A new Package to add
> * @param \Somea\Translation\Domain\Model\TranslationLanguage
> $language A new Language to add
> * @param string $translationTarget
> * @param string $translationApproval
> * @param string $comment
> * @return void
> */
> public function updateAction(TranslationUnit $unit, TranslationPackage
> $package, TranslationLanguage $language, $translationTarget,
> $translationApproval, $comment) {
> $this->translationUnitRepository->update($unit);
> $targetObject = new Translationtarget();
> $targetObject->setTranslationTarget($translationTarget);
> $targetObject->setTranslationApproval($translationApproval);
> $targetObject->setComment($comment);
> $targetObject->setTranslationLanguage($language);
> $targetObject->setTranslationUnit($unit);
> $this->translationTargetRepository->update($targetObject);
>
> $this->redirect('index','TranslationUnit','Somea.Translation',array('language'
> => $language, 'package' => $package));
> }
>
> and this is my model:
>
> - the translationunit model:
>
> /*
> *
> * This script belongs to the FLOW3 package "Somea.Translation". *
> * *
> * */
>
> use TYPO3\FLOW3\Annotations as FLOW3;
> use Doctrine\ORM\Mapping as ORM;
>
> /**
> * A Translation unit
> *
> * @FLOW3\Scope("prototype")
> * @FLOW3\Entity
> */
> class TranslationUnit {
>
> /**
> * The translationkey
> * @var string
> */
> protected $translationKey;
>
> /**
> * The translationsource
> * @var string
> */
> protected $translationSource;
>
>
> /**
> * The translationpackage
> * @var \Somea\Translation\Domain\Model\TranslationPackage
> * @ORM\ManyToOne(inversedBy="translationUnit")
> */
> protected $translationPackage;
>
>
> /** The flow3_persistence_identifier
> *
> * @var string
> * @ORM\Id
> * @ORM\Column(name="flow3_persistence_identifier", type="string",
> length=40)
> */
> protected $FLOW3_Persistence_Identifier;
>
>
> /**
> * Get the Translation unit's key
> *
> * @return string The Translation unit's key
> */
> public function getTranslationKey() {
> return $this->translationKey;
> }
>
> /**
> * Sets this Translation unit's key
> *
> * @param string $translationKey The Translation unit's key
> * @return void
> */
> public function setTranslationKey($translationKey) {
> $this->translationKey = $translationKey;
> }
>
> /**
> * Get the Translation unit's source
> *
> * @return string The Translation unit's source
> */
> public function getTranslationSource() {
> return $this->translationSource;
> }
>
> /**
> * Sets this Translation unit's source
> *
> * @param string $source The Translation unit's source
> * @return void
> */
> public function setTranslationSource($translationSource) {
> $this->translationSource = $translationSource;
> }
>
>
>
>
> /**
> * Get the Translation unit's translationpackage
> *
> * @return \Somea\Translation\Domain\Model\TranslationPackage The
> Translation unit's translationpackage
> */
> public function getTranslationPackage() {
> return $this->translationPackage;
> }
>
> /**
> * Sets this Translation unit's translationpackage
> *
> * @param \Somea\Translation\Domain\Model\TranslationPackage
> $translationpackage The Translation unit's translationpackage
> * @return void
> */
> public function
> setTranslationPackage(\Somea\Translation\Domain\Model\TranslationPackage
> $translationPackage) {
> $this->translationPackage = $translationPackage;
> }
>
> }
>
>
> -and translationtarget model:
> /* *
> * This script belongs to the FLOW3 package "Somea.Translation". *
> * *
> * */
>
> use TYPO3\FLOW3\Annotations as FLOW3;
> use Doctrine\ORM\Mapping as ORM;
>
> /**
> * A Translation target
> *
> * @FLOW3\Scope("prototype")
> * @FLOW3\Entity
> */
> class TranslationTarget {
>
> /**
> * The translation target
> * @var string
> */
> protected $translationTarget;
>
> /**
> * The translation approval
> * @var string
> */
> protected $translationApproval;
>
> /**
> * The translation comment
> * @var string
> */
> protected $comment;
>
> /**
> * The translationlanguage
> * @var \Somea\Translation\Domain\Model\TranslationLanguage
> * @ORM\ManyToOne(inversedBy="translationTarget")
> */
> protected $translationLanguage;
>
> /**
> * The translationlanguage
> * @var \Somea\Translation\Domain\Model\TranslationUnit
> * @ORM\ManyToOne(inversedBy="translationTarget")
> */
> protected $translationUnit;
>
> /**
> * Get the Translation target's target
> *
> * @return string The Translation target's target
> */
> public function getTranslationTarget() {
> return $this->translationTarget;
> }
>
> /**
> * Sets this Translation target's target
> *
> * @param string $translationTarget The Translation target's target
> * @return void
> */
> public function setTranslationTarget($translationTarget) {
> $this->translationTarget = $translationTarget;
> }
>
>
>
> /**
> * Get the Translation target's approval
> *
> * @return string The Translation target's approval
> */
> public function getTranslationApproval() {
> return $this->translationApproval;
> }
>
> /**
> * Sets this Translation target's approval
> *
> * @param string $translationApproval The Translation target's approval
> * @return void
> */
> public function setTranslationApproval($translationApproval) {
> $this->translationApproval = $translationApproval;
> }
>
> /**
> * Get the Translation target's comment
> *
> * @return string The Translation target's comment
> */
> public function getComment() {
> return $this->comment;
> }
>
> /**
> * Sets this Translation target's comment
> *
> * @param string $comment The Translation target's comment
> * @return void
> */
> public function setComment($comment) {
> $this->comment = $comment;
> }
>
>
> /**
> * Get the Translation target's translationlanguage
> *
> * @return \Somea\Translation\Domain\Model\TranslationLanguage The
> Translation unit's translationlanguage
> */
> public function getTranslationLanguage() {
> return $this->translationLanguage;
> }
>
> /**
> * Sets this Translation target's translationlanguage
> *
> * @param \Somea\Translation\Domain\Model\TranslationLanguage
> $translationlanguage The Translation unit's translationlanguage
> * @return void
> */
> public function
> setTranslationLanguage(\Somea\Translation\Domain\Model\TranslationLanguage
> $translationLanguage) {
> $this->translationLanguage = $translationLanguage;
> }
>
> /**
> * Get the Translation target's translationunit
> *
> * @return \Somea\Translation\Domain\Model\TranslationUnit The Translation
> unit's translationunit
> */
> public function getTranslationUnit() {
> return $this->translationUnit;
> }
>
> /**
> * Sets this Translation target's translationlanguage
> *
> * @param \Somea\Translation\Domain\Model\TranslationUnit $translationUnit
> The Translation unit's translationunit
> * @return void
> */
> public function
> setTranslationUnit(\Somea\Translation\Domain\Model\TranslationUnit
> $translationUnit) {
> $this->translationUnit = $translationUnit;
> }
>
>
>
> }
>
>
>
> if i execute this action, it will throw an error: *: The object of type
> "TranslationTarget" given to update must be persisted already, but is new*
>
> Please let me know if there is any questions about my explanation or you
> need something else.
>
> Best Regards,
>
> Daniel
More information about the FLOW3-general
mailing list