[TYPO3-mvc] How to get first object of an 1:n relation
Claus Due
claus at wildside.dk
Wed Jun 22 18:02:07 CEST 2011
Looks good but wish I could understand it. I used to host a holocaust-info website for a friend so I sympathize a lot with the purpose. Best of luck to you!
-----
Venlig hilsen / Kind regards,
Claus Due
Senior Proctometrist
http://fedext.net/
On Jun 22, 2011, at 5:44 PM, Dmitri Pisarev wrote:
> Thanks Claus, I'll be warned.
> My plugin just displays stuff - all the editing is in the backend.
> If you are interested, it shall be the map of Russian holocaust - all of the places in which people were murdered during the soviet years:
> http://www.psmb.ru/karta_pamjati (work in progress!)
>
> Regards,
> Dmitri.
>
> 22.06.2011 19:24, Claus Due пишет:
>> Hi Dmitri,
>>
>> As always you're welcome :)
>>
>> You probably already know this, but there's a chance this can break unexpectedly if you have any piece of code anywhere, which does not consider the type of an 1:n member property (array / storage) and tries to call ->count() etc. on your $this->types list. This could break if you update an object in FE - better test for that if you intend to have save/update features :)
>>
>> -----
>> Venlig hilsen / Kind regards,
>>
>> Claus Due
>> World Class Extraterrestrial
>> http://fedext.net/
>>
>> On Jun 22, 2011, at 5:16 PM, Dmitri Pisarev wrote:
>>
>>> Hey Claus,
>>> you are, as always, correct!
>>> The reason why this trick worked on images for me before is that I did explode on them and returned them as array.
>>> I modified the getter, following your advice, to this and it works:
>>> public function getTypes() {
>>> return $this->types->toArray();
>>> }
>>>
>>> Thank you!
>>>
>>> Dmitri.
>>> 22.06.2011 15:11, Claus Due пишет:
>>>> Hi Dmitri,
>>>>
>>>> ObjectStorage can be converted to array but cannot be accessed with numeric indexes like an array can. That's the reason why the .0 trick doesn't work on ObjectStorage.
>>>>
>>>> You can do this though:
>>>>
>>>> $images = $place->getImages()->toArray();
>>>> $this->view->assign('images', $images);
>>>>
>>>> and then {images.0.filename} or whatever.
>>>>
>>>> If you are looping {places} in Fluid then your only option is a ViewHelper which can read the first item off of an ObjectStorage and re-assign as a template variable (or simply return, if you only use it inline).
>>>>
>>>> --
>>>>
>>>> Med venlig hilsen / Kind regards
>>>>
>>>> Claus Due
>>>> Code Monkey
>>>> --
>>>> Wildside A/S
>>>> Katrinebjergvej 113, DK-8200 Århus N
>>>> tlf. 86 12 64 65
>>>> http://www.wildside.dk
>>>>
>>>> On Jun 22, 2011, at 12:50 PM, Dmitri Pisarev wrote:
>>>>
>>>>> Hi!
>>>>> Sorry for bringing up the old thread.
>>>>> I stuck with the same problem - my code that used to work without problem is now broken. This used to work just fine: {place.images.0}
>>>>> Now I had to add another getter to the Place model and use the {place.firstImage}
>>>>>
>>>>> What has gone wrong with the old approach?
>>>>>
>>>>> Regards,
>>>>> Dmitri.
>>>>> 14.04.2011 17:22, Franz Koch пишет:
>>>>>> Hey,
>>>>>>
>>>>>>> i've got an 1:n relation called anhaenge.
>>>>>>> How i get the first object of anhaenge in a fluid view?
>>>>>>>
>>>>>>> Is there a way like
>>>>>>> {currentObject.anhaenge.first.propertyIlikeToDisplay} ?
>>>>>>
>>>>>> not yet. AFAIK there is a review from Felix pending that's implementing
>>>>>> a "getFirst" method in objectStorages which should actually allow what
>>>>>> you currently try.
>>>>>>
>>>>>> But until this is implemented I'd suggest to do one of the following:
>>>>>>
>>>>>> a) simply loop over the "anhaenge"
>>>>>> b) add a method "getFirstAttachment" to your "currentObject"s domain
>>>>>> model that's doing the work for you
>>>>>> c) write a little viewHelper that's able to do what you need
>>>>>>
>>>>>> c) would be my favorite because it's most flexible and can be reused for
>>>>>> other relations.
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> TYPO3-project-typo3v4mvc mailing list
>>>>> TYPO3-project-typo3v4mvc at lists.typo3.org
>>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
>>>>
>>>
>>> _______________________________________________
>>> TYPO3-project-typo3v4mvc mailing list
>>> TYPO3-project-typo3v4mvc at lists.typo3.org
>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
>>
>
> _______________________________________________
> TYPO3-project-typo3v4mvc mailing list
> TYPO3-project-typo3v4mvc at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc
More information about the TYPO3-project-typo3v4mvc
mailing list