Jump to content

Ordering attributes within a node: Difference between revisions

From NusaATK
Mjs (talk | contribs)
changed explanation, added reference to setOrder()
Mjs (talk | contribs)
if fields are added via a constructor, they will appear in the order in which they are added
Line 19: Line 19:
</syntaxhighlight>
</syntaxhighlight>


(The order in which fields are added has no effect because fields are added to nodes before both the settings from <tt>atkMetaNode::meta()</tt> are applied, and the <tt>atkMetaNode::postMeta()</tt> method is run--"adding" a field via either of these fields reconfigures an existing node.)
(The order in which fields are added has no effect because fields are added to nodes before both the settings from <tt>atkMetaNode::meta()</tt> are applied, and the <tt>atkMetaNode::postMeta()</tt> method is run--"adding" a field via either of these fields reconfigures an existing node.  Fields <em>will</em> appear in the order in which they are added in a constructor, but configuring nodes via a constructor is discouraged.)

Revision as of 11:09, 14 July 2008

ATK Howto: Ordering attributes within a node

Complexity: Basic
Author: Ivo Jansch <ivo@achievo.org>

List of other Howto's

Ordering attributes within a node

By default, fields appear in the order in which they appear in the database. To control the order in which attributes appear within a node (i.e. on a "page"), use atkMetaPolicy::setOrder(), atkMetaPolicy::setIncludes() or the $order argument to either atkMetaNode::add() or atkMetaPolicy::add().

For example:

public static function meta(atkMetaPolicy $policy) {
  $policy->add("invoice_start_date", "atkDateAttribute");
  $policy->add("invoice_end_date", "atkDateAttribute");

  $policy->setOrder(array(
    "invoice_start_date",
    "invoice_end_date"
  ));
}

(The order in which fields are added has no effect because fields are added to nodes before both the settings from atkMetaNode::meta() are applied, and the atkMetaNode::postMeta() method is run--"adding" a field via either of these fields reconfigures an existing node. Fields will appear in the order in which they are added in a constructor, but configuring nodes via a constructor is discouraged.)