foreach delimiter behaviour ezp4

Author Message

Dan Mansfield

Wednesday 04 February 2009 12:51:02 pm

I have an array:

{def $relations=fetch('content','related_objects',hash(object_id,$child.contentobject_id))  }

I want to loop through and show just those items that have the class_identifier I want.

{foreach $relations as $prod}
                {if $prod.class_identifier|eq('application')}
                {skip}
                {/if}
<a href={$prod.main_node.url_alias|ezurl}>{$prod.main_node.name|wash()}</a>
{delimiter}, {/delimiter}
{/foreach}

The problem occurs when it displays on the page as putting the delimiter in after the last entry. I thought the

 {skip} 

would stop that from occurring.

Am I missing a trick here or is there a better way to accomplish this?

André R.

Wednesday 04 February 2009 2:31:44 pm

Tried {continue} ìnstead of {skip}?

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Dan Mansfield

Wednesday 04 February 2009 2:47:22 pm

yes, {continue} puts lots of delimiters in as expected.

if the array has say (prod, prod, application, application)

then it will show prod, prod, as the output

if it has (prod, prod)

then it will show prod, prod

 

André R.

Thursday 05 February 2009 12:32:22 am

ok, we'll one way would be to:

{foreach $relations as $prod}
    {if $prod.class_identifier|eq('application')}
        {skip}
    {/if}
    <a href={$prod.main_node.url_alias|ezurl}>{$prod.main_node.name|wash()}</a>
    {delimiter}{if $prod.class_identifier|ne('application')}, {/if}{/delimiter}
{/foreach}

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Hans Melis

Thursday 05 February 2009 12:49:00 am

What is your exact eZ Publish version? There have been a few issues regarding {skip} and delimiters in 4.0.0, but they should be fixed in 4.0.1 (well, they are in our case).

Hans
http://blog.hansmelis.be

Dan Mansfield

Thursday 05 February 2009 12:57:46 am

Version: 4.0.1 (4.0.1)
SVN revision: 19785

Dan Mansfield

Thursday 05 February 2009 1:02:06 am

André,
Your 'fix' worked.
Should I report an issue that the {skip} didn't work as anticipated?

André R.

Thursday 05 February 2009 1:09:01 am

yes please.

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Pascal France

Thursday 08 October 2009 3:17:52 am

Hi,

I have the same problem than Dan (with eZP 4.2.0): the delimiter occurs after the last option.

This is my code:

{def $list_enfants=fetch( content, list, hash( parent_node_id, $node.node_id))}

{foreach $list_enfants as $enfant}

     {def $liste_des_id_selectionnes=$enfant.data_map.mes_selections.content}
     {foreach $enfant.data_map.intervention.class_content.options as $option}
           {if $liste_des_id_selectionnes|contains( $option.id )|not}
                 {skip}
            {else}
                  {$option.name|wash( xhtml )}
            {/if}
            {delimiter} - {/delimiter}
     {/foreach}
{/foreach}
{/def}

I have tried the solution proposed by André but it doesn't works. In any case, I get:

option 1 - option 2 - option 3 -

Pascal

Ce qui embellit le désert c'est qu'il cache un puits... quelque part... (A. de Saint-Exupéry) - http://luxpopuli.fr/eZ-Publish

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.