Files
smarty/docs/ru/designers/language-custom-functions/language-function-html-options.xml
2008-05-25 15:06:11 +00:00

211 lines
6.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 0 Maintainer: freespace Status: ready -->
<sect1 id="language.function.html.options">
<title>{html_options}</title>
<para>{html_options} является
<link linkend="language.custom.functions">пользовательской функцией</link>,
которая создает группу HTML-тэгов option по указанной информации.
Также она обеспечивает выбор элемента по умолчанию.
Параметры values и output являются обязательными, если не указан атрибут
options.
</para>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="param" align="center" />
<colspec colname="type" align="center" />
<colspec colname="required" align="center" />
<colspec colname="default" align="center" />
<colspec colname="desc" />
<thead>
<row>
<entry>Имя атрибута</entry>
<entry>Тип</entry>
<entry>Обязателен</entry>
<entry>По умолчанию</entry>
<entry>Описание</entry>
</row>
</thead>
<tbody>
<row>
<entry>values</entry>
<entry>массив</entry>
<entry>Да, если не указан атрибут options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>массив значений для выпадающего списка</entry>
</row>
<row>
<entry>output</entry>
<entry>массив</entry>
<entry>Да, если не указан атрибут options</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>массив названий для выпадающего списка</entry>
</row>
<row>
<entry>selected</entry>
<entry>string/array</entry>
<entry>Нет</entry>
<entry><emphasis>пусто</emphasis></entry>
<entry>Выбранный элемент(ы)</entry>
</row>
<row>
<entry>options</entry>
<entry>ассоциативный массив</entry>
<entry>Да, если не указаны атрибуты values и output</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>ассоциативный массив значений и названий</entry>
</row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>Нет</entry>
<entry><emphasis>пусто</emphasis></entry>
<entry>Название выпадающего списка</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Если переданное значение - массив, оно будет принято за HTML-тэг &lt;optgroup&gt;
и отображено в виде групп. В элементе &lt;optgroup&gt; поддерживается рекурсия.
Весь вывод совместим с XHTML.
</para>
<para>
Если указан необязательный параметр <emphasis>name</emphasis>, список будет
окружен тэгом &lt;select name="groupname"&gt;&lt;/select&gt;.
В противном случае будут сгенерированы лишь элементы &lt;option&gt;.
</para>
<para>
Все параметры, которые не указаны выше, выводятся в виде
пар name/value в тэге &lt;select&gt;. Если необязательный
параметр <emphasis>name</emphasis> не указан, они игнорируются.
</para>
<example>
<title>{html_options}</title>
<para>
<emphasis role="bold">Пример №1:</emphasis>
</para>
<programlisting role="php">
<![CDATA[
<?php
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
$smarty->assign('cust_names', array(
'Joe Schmoe',
'Jack Smith',
'Jane Johnson',
'Charlie Brown'));
$smarty->assign('customer_id', 1001);
?>
]]>
</programlisting>
<para>
Шаблон:
</para>
<programlisting>
<![CDATA[
<select name="customer_id">
{html_options values=$cust_ids output=$cust_names selected=$customer_id}
</select>
]]>
</programlisting>
<para>
<emphasis role="bold">Пример №2:</emphasis>
</para>
<programlisting role="php">
<![CDATA[
<?php
$smarty->assign('cust_options', array(
1000 => 'Joe Schmoe',
1001 => 'Jack Smith',
1002 => 'Jane Johnson',
1003 => 'Charlie Brown')
);
$smarty->assign('customer_id', 1001);
?>
]]>
</programlisting>
<para>
Шаблон:
</para>
<programlisting>
<![CDATA[
{html_options name=customer_id options=$cust_options selected=$customer_id}
]]>
</programlisting>
<para>
Результат выполнения обоих примеров будет следующим:
</para>
<screen>
<![CDATA[
<select name="customer_id">
<option label="Joe Schmoe" value="1000">Joe Schmoe</option>
<option label="Jack Smith" value="1001" selected="selected">Jack Smith</option>
<option label="Jane Johnson" value="1002">Jane Johnson</option>
<option label="Charlie Brown" value="1003">Charlie Brown</option>
</select>
]]>
</screen>
</example>
<example>
<title>{html_options} - Пример с базой данных (к примеру, PEAR или ADODB):</title>
<programlisting role="php">
<![CDATA[
<?php
$sql = 'select type_id, types from contact_types order by type';
$smarty->assign('contact_types',$db->getAssoc($sql));
$sql = 'select contact_id, name, email, contact_type_id
from contacts where contact_id='.$contact_id;
$smarty->assign('contact',$db->getRow($sql));
?>
]]>
</programlisting>
<para>
Шаблон:
</para>
<programlisting>
<![CDATA[
<select name="type_id">
<option value='null'>-- none --</option>
{html_options options=$contact_types selected=$contact.type_id}
</select>
]]>
</programlisting>
</example>
<para>
См. также
<link linkend="language.function.html.checkboxes">{html_checkboxes}</link>
и
<link linkend="language.function.html.radios">{html_radios}</link>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->