ibexa

Path

ez publish / technical manual / 3.9 / templates / the template language / array and object inspection


Caution: This documentation is for eZ Publish legacy, from version 3.x to 5.x.

Array and object inspection

By using the "attribute" template operator, it is possible to quickly inspect the contents of arrays and template objects. The operator creates an overview of available keys, attribute names and/or methods in an object or an array. By default, only the array keys and object attribute names (also called identifiers) are shown. By passing "show" as the first parameter, the operator will also display the values. The second parameter can be used to control the number of levels/children that will be explored (the default setting is 2). The following example demonstrates how the operator can be used to inspect the contents of an "ezcontentobjecttreenode" object.

{$node|attribute( show, 1 )}

The following output will be produced:

Attribute

Type

Value

node_id

string

2

parent_node_id

string

1

main_node_id

string

2

contentobject_id

string

1

contentobject_version

string

10

contentobject_is_published

string

1

depth

string

1

sort_field

string

8

sort_order

string

1

priority

string

 

modified_subnode

string

1108118324

path_string

string

'/1/2/'

path_identification_string

string

''

is_hidden

string

 

is_invisible

string

 

name

string

'eZ publish'

data_map

array

Array(6)

object

object[ezcontentobject]

Object

subtree

array

Array(114)

children

array

Array(44)

children_count

string

44

contentobject_version_object

object[ezcontentobjectversion]

Object

sort_array

array

Array(1)

can_read

boolean

true

can_create

boolean

false

can_edit

boolean

false

can_hide

boolean

false

can_remove

boolean

false

can_move

boolean

false

creator

object[ezcontentobject]

Object

path

array

Array(0)

path_array

array

Array(2)

parent

object[ezcontentobjecttreenode]

Object

url

string

''

url_alias

string

''

class_identifier

string

'folder'

class_name

string

'Folder'

hidden_invisible_string

string

'-/-'

hidden_status_string

string

'Visible'

As the output shows, there is a lot of information that can be extracted from a node object. In addition to strings and numbers the object also consists of other objects. For example, the creator of the node is a "ezcontentobject" object. The creator object can be further inspected by doing the following:

{$node.creator|attribute( show, 1 )}

The following output will be produced:

Attribute

Type

Value

id

string

14

section_id

string

2

owner_id

string

14

contentclass_id

string

4

name

string

'Administrator User'

is_published

string

 

published

string

1033920830

modified

string

1033920830

current_version

string

1

status

string

1

current

object[ezcontentobjectversion]

Object

versions

array

Array(1)

author_array

array

Array(1)

class_name

string

'User'

content_class

object[ezcontentclass]

Object

contentobject_attributes

array

Array(5)

owner

object[ezcontentobject]

Object

related_contentobject_array

array

Array(0)

related_contentobject_count

string

 

reverse_related_contentobject_array

array

Array(0)

reverse_related_contentobject_count

string

 

can_read

boolean

false

can_create

boolean

false

can_create_class_list

array

Array(0)

can_edit

boolean

false

can_translate

boolean

false

can_remove

boolean

false

can_move

boolean

false

data_map

array

Array(5)

main_parent_node_id

string

13

assigned_nodes

array

Array(1)

parent_nodes

array

Array(1)

main_node_id

string

15

main_node

object[ezcontentobjecttreenode]

Object

default_language

string

'eng-GB'

content_action_list

boolean

false

class_identifier

string

'user'

class_group_id_list

array

Array(1)

name

string

'Administrator User'

match_ingroup_id_list

boolean

false

Again, this object consists of a lot of information. As mentioned above, the "attribute" operator can be used on both objects and arrays. The following example demonstrates how to inspect the "data_map" array (which reveals the object's attributes) of the node's creator object.

{$node.creator.data_map|attribute( show, 1 )}

The following output will be produced:

Attribute

Type

Value

first_name

object[ezcontentobjectattribute]

Object

last_name

object[ezcontentobjectattribute]

Object

user_account

object[ezcontentobjectattribute]

Object

signature

object[ezcontentobjectattribute]

Object

image

object[ezcontentobjectattribute]

Object

Balazs Halasy (17/02/2005 9:02 am)

Svitlana Shatokhina (02/11/2007 8:40 am)

Balazs Halasy, Svitlana Shatokhina


Comments

  • ?

    Could this information be more extended?
  • Doesn't show simple values anymore

    If you use attribute(show) to show a non-array or object like {$node.node_id|attribute(show)} it outputs nothing. A bit irritating when you crawl down an object in search for a value, and when you think you have found it it shows nothing :)

    I'm pretty sure it did so in 3.5
  • Test for empty array

    To test for an empty array (to add a title to a fetched list, conditional on the list containing items, for instance) you can use either of these:
    {if $my_array|count()|gt(0)}
    <h2>My Title</h2>
    {else}
    {* Nothing! *}
    {/if}
    

    or
    {if $my_array}
    <h2>My Title</h2>
    {else}
    {* Nothing! *}
    {/if}