[TYPO3-mvc] creating/deleting mm-realations between existing entities in front end? - SOLVED
Uwe Michelfelder
um at limeflavour.com
Tue Feb 16 14:49:18 CET 2010
Hi,
I answer this thread to myself, so that if someone stumbles over this,
with the same problem, can read the solution here, too! ;-)
Solution was:
1. correct TCA-Configuration concerning the MM-Relatino table, etc. and
exttables.php
2. IN GENERAL: never use exit(); for debugging and let run extbase till
it finishes...... I think this will prevent a lot of headaches for me in
the future....
Greets,
Uwe
Am 16.02.10 09:13, schrieb Uwe Michelfelder:
> Hi everyone,
>
> I managed to produce the wished behavior in the blog_example extension.
> In the Post-Controller I added:
>
> /**
> * addtag action
> *
> * @param Tx_BlogExample_Domain_Model_Tag $tag
> * @param Tx_BlogExample_Domain_Model_Post $post
> * @return string The rendered view
> */
> public function addtagAction(Tx_BlogExample_Domain_Model_Post $post,
> Tx_BlogExample_Domain_Model_Tag $tag)
> {
> $post->addTag($tag);
> $post->setTags($post->getTags()); // is this needed?
> $this->postRepository->update($post);
> $this->flashMessages->add('Tag was added.');
> $this->redirect('show', NULL, NULL, array('post' => $post));
>
> }
>
> To trigger this I use this URL:
> index.php?id=XXX&tx_blogexample_pi1[post]=1&tx_blogexample_pi1[tag]=1&tx_blogexample_pi1[action]=addtag&tx_blogexample_pi1[controller]=Post
>
> This works as expexted now. :-)
>
> In my extension however, after the
> "$this->groupRepository->update($group);", nothing happens.
>
> Is there any point in the configuration besides TCA, which tells the
> Repository where to write the mm-relation.
>
> This is my TCA config for this relation produced by the kickstarter:
>
> [..]
> 'members' => array(
> 'exclude' => 0,
> 'label' =>
> 'LLL:EXT:mmtest/Resources/Private/Language/locallang_db.xml:tx_mmtest_domain_model_group.members',
> 'config' => array(
> 'type' => 'select',
> 'size' => 10,
> 'minitems' => 0,
> 'maxitems' => 9999,
> 'autoSizeMax' => 30,
> 'multiple' => 1,
> 'foreign_table' => 'tx_mmtest_domain_model_member',
> 'MM' => 'tx_mmtest_group_member_mm',
> )
> ),
> [..]
>
> And the add action of my ext:
>
> /**
> * addmember action
> *
> * @param Tx_Mmtest_Domain_Model_Group $group The group the member joins
> * @param Tx_Mmtest_Domain_Model_Member $member The member
> * @return string The rendered view
> */
> public function addmemberAction(Tx_Mmtest_Domain_Model_Group $group,
> Tx_Mmtest_Domain_Model_Member $member)
> {
> $group->addMember($member);
> $group->setMembers($group->getMembers());
> $this->groupRepository->update($group);
> echo "member added";
> exit;
> }
>
> If someone wants to have a closer look into this, I put a zip file of
> the ext here:
> http://tinyurl.com/yfrue4a (DropBox)
>
>
> Greetings,
> Uwe
>
>
> Am 15.02.10 19:06, schrieb Uwe Michelfelder:
>> Hello all,
>>
>> we encounter problems while trying to create a MM-relation between
>> existing entities.
>>
>> We already have GROUPS and MEMBERS which can join or leave groups.
>> Both entities do already exist, so the members don't come along while
>> creating/editing the group entity via a form.
>>
>> What we do is, that we trigger the joinAction with a link which provides
>> the current selected group object. In the controler action the current
>> fe-user is selected.
>>
>> We now have both objects "group" and "member".
>>
>> According to the blog_example -> adding tags to the post, it would go
>> like this:
>> The group model knows has the "addMember" method including the
>> attach-Method on $members (initialized in the constructor).
>>
>> The difference to our code is, that tags are only addable through the
>> Typo3 backend.
>>
>> Is there no way to create MM-relations in the front end controller?
>>
>>
>> Greetings,
>> Uwe
>
More information about the TYPO3-project-typo3v4mvc
mailing list