<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ajax on Jeremy Jackson</title>
    <link>https://new.tsjee.ru/tags/ajax/</link>
    <description>Recent content in Ajax on Jeremy Jackson</description>
    <generator>Hugo</generator>
    <language>ru</language>
    <lastBuildDate>Sat, 23 Jul 2011 13:57:37 +0000</lastBuildDate>
    <atom:link href="https://new.tsjee.ru/tags/ajax/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Два селекта на ajax</title>
      <link>https://new.tsjee.ru/posts/2011-07-23-%D0%B4%D0%B2%D0%B0-%D1%81%D0%B5%D0%BB%D0%B5%D0%BA%D1%82%D0%B0-%D0%BD%D0%B0-ajax/</link>
      <pubDate>Sat, 23 Jul 2011 13:57:37 +0000</pubDate>
      <guid>https://new.tsjee.ru/posts/2011-07-23-%D0%B4%D0%B2%D0%B0-%D1%81%D0%B5%D0%BB%D0%B5%D0%BA%D1%82%D0%B0-%D0%BD%D0%B0-ajax/</guid>
      <description>&lt;p&gt;Два селекта: марка и модель. Выбираем марку и у нас подгружается список моделей. В коллбэк функции возвращаем форму, которую хотим изменить. Через** $form_state** получаем значение.&#xA;Будьте внимательны, форма перестраивается занова, но визуально меняется только изменяющийся элемент.&lt;/p&gt;&#xA;&lt;p&gt;//функция создания формы&#xA;function bull_form($form, $form_state,$nid = NULL) {&#xA;//запрос к таксономии для заполнения селекта&#xA;$query = db_select(&amp;rsquo;taxonomy_term_data&amp;rsquo;, &amp;rsquo;t&amp;rsquo;);&#xA;$query-&amp;gt;innerJoin(&amp;rsquo;taxonomy_term_hierarchy&amp;rsquo;, &amp;lsquo;r&amp;rsquo;, &amp;rsquo;t.tid = r.tid&amp;rsquo;);&#xA;$query-&amp;gt;fields(&amp;lsquo;r&amp;rsquo;,array(&amp;lsquo;parent&amp;rsquo;));&#xA;$query-&amp;gt;fields(&amp;rsquo;t&amp;rsquo;);&#xA;$query-&amp;gt;condition(&amp;lsquo;r.parent&amp;rsquo;, PARENT, &amp;lsquo;=&amp;rsquo; );&#xA;$query-&amp;gt;orderBy(&amp;rsquo;t.name&amp;rsquo;, &amp;lsquo;ASC&amp;rsquo;);&#xA;$result = $query-&amp;gt;execute();&#xA;$options = array();&#xA;//заполняем option для select&#xA;foreach($result as $item){&#xA;$options[$item-&amp;gt;tid] = $item-&amp;gt;name;&#xA;}&#xA;//проверям выбрана ли марка, делаем запрос по моделям этой марки (то есть пришел ли запрос от аякса)&#xA;if(isset($form_state[&amp;lsquo;values&amp;rsquo;][&amp;lsquo;marka&amp;rsquo;])) {&#xA;$tid = $form_state[&amp;lsquo;values&amp;rsquo;][&amp;lsquo;marka&amp;rsquo;];&#xA;$query = db_select(&amp;rsquo;taxonomy_term_data&amp;rsquo;, &amp;rsquo;t&amp;rsquo;);&#xA;$query-&amp;gt;innerJoin(&amp;rsquo;taxonomy_term_hierarchy&amp;rsquo;, &amp;lsquo;r&amp;rsquo;, &amp;rsquo;t.tid = r.tid&amp;rsquo;);&#xA;$query-&amp;gt;fields(&amp;rsquo;t&amp;rsquo;);&#xA;$query-&amp;gt;fields(&amp;lsquo;r&amp;rsquo;,array(&amp;lsquo;parent&amp;rsquo;));&#xA;$query-&amp;gt;condition(&amp;lsquo;r.parent&amp;rsquo;, $tid, &amp;lsquo;=&amp;rsquo; );&#xA;$query-&amp;gt;orderBy(&amp;rsquo;t.name&amp;rsquo;, &amp;lsquo;ASC&amp;rsquo;);&#xA;$result = $query-&amp;gt;execute();&#xA;$options2 = array();&#xA;//собираем опции для селекта&#xA;foreach($result as $item){&#xA;$options2[$item-&amp;gt;tid] = $item-&amp;gt;name;&#xA;}&#xA;}&#xA;//    селект марки&#xA;$form[&amp;rsquo;left&amp;rsquo;][&amp;lsquo;marka&amp;rsquo;] = array (&#xA;&amp;lsquo;#type&amp;rsquo; =&amp;gt; &amp;lsquo;select&amp;rsquo;,&#xA;&amp;lsquo;#title&amp;rsquo; =&amp;gt; t(&amp;lsquo;Producer&amp;rsquo;),&#xA;&amp;lsquo;#options&amp;rsquo; =&amp;gt; $options,&#xA;&amp;lsquo;#ajax&amp;rsquo; =&amp;gt; array(&#xA;//прописываем какую звать функцию при изменение селекта&#xA;&amp;lsquo;callback&amp;rsquo; =&amp;gt; &amp;lsquo;ajax_get_models&amp;rsquo;,&#xA;//какой элемент  html в форме заменять&#xA;&amp;lsquo;wrapper&amp;rsquo; =&amp;gt; &amp;lsquo;replace_models_div&amp;rsquo;,&#xA;), &lt;br&gt;&#xA;);&#xA;$form[&amp;lsquo;right&amp;rsquo;][&amp;lsquo;model&amp;rsquo;] = array (&#xA;&amp;lsquo;#type&amp;rsquo; =&amp;gt; &amp;lsquo;select&amp;rsquo;,&#xA;&amp;lsquo;#title&amp;rsquo; =&amp;gt; t(&amp;lsquo;Model&amp;rsquo;),&#xA;&amp;lsquo;#options&amp;rsquo; =&amp;gt; (isset($options2)) ? $options2 : array(&amp;lsquo;choose model&amp;rsquo;),&#xA;//оборачиваем в div для замены&#xA;&amp;lsquo;#prefix&amp;rsquo; =&amp;gt; &amp;lsquo;&amp;rsquo;,&#xA;&amp;lsquo;#suffix&amp;rsquo; =&amp;gt; &amp;lsquo;&amp;rsquo;,&lt;br&gt;&#xA;);&#xA;return $form;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
