[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