Location: PHPKode > projects > Open Power Template > docs/Opt/api.opt-component-interface.manage-attributes.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta name="robots" content="all" />

	<title>manageAttributes() - Open Power Template</title>
	
	<link rel="stylesheet" type="text/css" href="design/generic.css" media="all"  />
	<link rel="stylesheet" type="text/css" href="design/print.css" media="print" />
	<!--[if lte IE 6]><link rel="stylesheet" href="design/ie.css" type="text/css" /><![endif]-->	
	<!--[if IE 7]><link rel="stylesheet" href="design/ie7.css" type="text/css" /><![endif]-->
</head>
<body>

<div id="wrap">
	<div id="header">
		<h1>Open Power Template 2.0</h1>
		<h2>manageAttributes()</h2>
		<p class="generated">@ 02.09.2010</p>
		<p class="location"><a href="index.html"><strong>User manual</strong></a> &raquo; <a href="api.html">API Reference</a> &raquo; <a href="api.opt-component-interface.html">Opt_Component_Interface</a> &raquo; <a href="api.opt-component-interface.manage-attributes.html">Opt_Component_Interface::manageAttributes()</a></p>
	</div>
	
	<div id="content"><dl class="location"><dt><a href="api.opt-component-interface.html">7.22. Opt_Component_Interface</a><br/>7.22.5. manageAttributes()</dt><dd class="prev">7.22.4. get()<br/><a href="api.opt-component-interface.get.html">&laquo; Previous</a></dd><dd class="next">7.22.6. processEvent()<br/><a href="api.opt-component-interface.process-event.html">Next &raquo;</a></dd></dl>	<h1>7.22.5. manageAttributes()</h1><div class="tf_reference"><table><tr><th>Construct</th><td>Abstract method</td></tr><tr><th>Visibility</th><td>public</td></tr><tr><th>Reference</th><td><code>array manageAttributes(string $name, array $attributes)</code></td></tr><tr><th>Argument list</th><td><dl><dt><code>$name</code> <small>- string</small></dt><dd>The tag name.</dd><dt><code>$attributes</code> <small>- array</small></dt><dd>The initial assotiative array of tag attribute values</dd></dl></td></tr><tr><th>Returned value</th><td>Modified list of tag attribute values</td></tr></table><hr/></div><p><code>manageAttributes()</code> handles the attribute lists of the XML tags with the <code>opt:component-attributes</code> attribute or within the <code>com</code> namespace in the component port. It allows the component to extend the tag with some extra attributes (or modify their default values), for example to configure its look according to the current component status. The attributes are passed as an associative array, where the index is the attribute name, and the method should return the same, but modified array. The <code>$name</code> argument contains the tag name and it can be used to identify the tag we are going to process. The value of <code>opt:component-attributes</code> is added to the tag name and concatenated with the <code>#</code> symbol, for example: <code>div#default</code>.</p>

<p>Let's take a look at the following component port:</p>

<pre class="xml"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;opt:component</span> <span style="color: #000066;">from</span>=<span style="color: #ff0000;">&quot;$component&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;field&quot;</span> <span style="color: #000066;">opt:component-attributes</span>=<span style="color: #ff0000;">&quot;default&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>{$opt.component.title}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;opt:display</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;opt:onEvent</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;error&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>An error occurred: {$errorMessage}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/opt:onEvent<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/opt:component<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre>

<p>If the component is in the invalid state (for example, the user entered the invalid value in the form field), we wish to change the CSS class of the entire <code>&lt;div&gt;</code>. Because it contains the <code>opt:component-attributes</code> attribute, OPT will capture this tag and send its attributes to <code>manageAttributes()</code>. It can modify the CSS class then:</p>

<pre class="php"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> manageAttributes<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">Array</span></a> <span style="color: #000088;">$attributes</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">valid</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$attributes</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'class'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'error'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$attributes</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">// end manageAttributes();</span></pre>

<blockquote class="important">
  <p>If your component does not provide any support for <code>opt:component-attributes</code>, the method should return the <code>$attributes</code> argument.</p>
</blockquote>
<dl class="location location-bottom"><dt>7.22.5. manageAttributes()<br/><a href="api.opt-component-interface.html">7.22. Opt_Component_Interface</a></dt><dd class="prev"><a href="api.opt-component-interface.get.html">&laquo; Previous</a><br/>7.22.4. get()</dd><dd class="next"><a href="api.opt-component-interface.process-event.html">Next &raquo;</a><br/>7.22.6. processEvent()</dd></dl>		</div>
	
	<div id="footer">
		<p>Copyright &copy; <a href="http://www.invenzzia.org/">Invenzzia Group 2008-2009</a></p>
		<p>Available under the terms of license: <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License 1.2</a></p>
		<p>Generated by <strong>TypeFriendly 0.1.4</strong> by <a href="http://www.invenzzia.org/">Invenzzia</a></p>
	</div>
</div>

</body>
</html>
Return current item: Open Power Template