<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>CakePHP - Manual/Developing/Views/Elements</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements</link>
<description>History/revisions of CakePHP/Manual/Developing/Views/Elements</description>
<language>en-us</language>
<item>
<title>2009-03-09 21:44:44</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements/show?time=2009-03-09+21%3A44%3A44</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a name=".manual.developing.views.elements" href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Views&amp;nbsp;/&amp;nbsp;Elements&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+21%3A44%3A44">2009-03-09 21:44:44&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements">2009-03-11 11:47:26&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Вы&amp;nbsp;можете ипользовать кэширование отображений, если установите параметр cache. Если присвоить ему&amp;nbsp;true, то&amp;nbsp;кэширование будет делаться на&amp;nbsp;один день. Вы&amp;nbsp;также можете установить другой срок действия кэширования. Смотрите раздел &amp;laquo;Кэширование&amp;raquo; для&amp;nbsp;получения дополнительной информации по&amp;nbsp;установке длительности.&lt;br />
&amp;lt;?php echo $this-&amp;gt;element('helpbox', array('cache' =&amp;gt; true)); ?&amp;gt;&lt;br />
Если вы&amp;nbsp;визуализируете один и&amp;nbsp;тот же&amp;nbsp;элемент более одного раза и&amp;nbsp;у вас&amp;nbsp;доступно кэширование, то&amp;nbsp;не забудьте каждый раз&amp;nbsp;устанавливать параметр 'key' для&amp;nbsp;другого имени. Это&amp;nbsp;предотвратит перезапись результата кэширования предыдущего вызова element().&lt;br />
echo $this-&amp;gt;element('helpbox', array('cache' =&amp;gt; array('key' =&amp;gt; 'first_use', 'time' =&amp;gt; '+1 day'), 'var' =&amp;gt; $var));&lt;br />
echo $this-&amp;gt;element('helpbox', array('cache' =&amp;gt; array('key' =&amp;gt; 'second_use', 'time' =&amp;gt; '+1 day'), 'var' =&amp;gt; $differentVar));&lt;br />
Код&amp;nbsp;выше обеспечивает отдельное кэширование обоих элементов.&lt;a name="h845-1">&lt;/a>&lt;h3>Запрос элементов из&amp;nbsp;плагина&lt;/h3>
Если вы&amp;nbsp;используете плагин и&amp;nbsp;желаете использовать элементы внутри плагина, то&amp;nbsp;просто определите параметр plugin. Если отображение визуализируется для&amp;nbsp;контроллера/действия плагина, то&amp;nbsp;это автоматически укажет на&amp;nbsp;элемент для&amp;nbsp;плагина. Если элемент не&amp;nbsp;существует в&amp;nbsp;плагине, то&amp;nbsp;программа будет искать в&amp;nbsp;главном каталоге APP.&lt;br />
&amp;lt;?php echo $this-&amp;gt;element('helpbox', array('plugin' =&amp;gt; 'pluginname')); ?&amp;gt;&lt;br />
&lt;span class="missingpage">&amp;lt;&amp;lt; Верстка&lt;/span>&lt;a href="http://cake-php.ru/wiki/Layouts/edit?add=1" title="Создать эту страницу">?&lt;/a> | &lt;span class="missingpage">Темы &amp;gt;&amp;gt;&lt;/span>&lt;a href="http://cake-php.ru/wiki/Themes/edit?add=1" title="Создать эту страницу">?&lt;/a>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-03-09 21:43:57</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements/show?time=2009-03-09+21%3A43%3A57</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Views&amp;nbsp;/&amp;nbsp;Elements&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+21%3A43%3A57">2009-03-09 21:43:57&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+21%3A44%3A44">2009-03-09 21:44:44&lt;/a>&lt;/b>&lt;br />
&lt;br />
No differences.&lt;/div>
</description>
</item>
<item>
<title>2009-03-09 20:19:30</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements/show?time=2009-03-09+20%3A19%3A30</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Views&amp;nbsp;/&amp;nbsp;Elements&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+20%3A19%3A30">2009-03-09 20:19:30&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+21%3A43%3A57">2009-03-09 21:43:57&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Для&amp;nbsp;кэширования различных версий одного и&amp;nbsp;того же&amp;nbsp;элемента в&amp;nbsp;приложении, доступен уникальный ключ кэша, использующий следующий формат:&lt;br />
$this-&amp;gt;element('helpbox',&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&amp;#147;cache&amp;#148; =&amp;gt; array('time'=&amp;gt; "+7 days&amp;#148;,'key'=&amp;gt;'unique value')&lt;/div>&lt;/div>&lt;/div>&lt;/div>
Вы&amp;nbsp;можете получить все&amp;nbsp;преимущества элементов, используя requestAction(). Функция requestAction() выбирает переменные отображения из&amp;nbsp;действия контроллера и&amp;nbsp;возвращает их&amp;nbsp;в виде массива. Это&amp;nbsp;позволяет вашим элементам соответствовать стилю MVC. Создайте действие контроллера, которое подготовит переменные отображения для&amp;nbsp;ваших элементов, затем вызовите requestAction() внутри второго параметра функции element(), для&amp;nbsp;передачи элементу переменных отображения из&amp;nbsp;контроллера.&lt;br />
Для&amp;nbsp;того, чтобы сделать это, добавьте в&amp;nbsp;ваш контроллер что-то, похожее на&amp;nbsp;следующее:&lt;br />
class &lt;span class="missingpage">Posts&amp;nbsp;Controller&lt;/span>&lt;a href="http://cake-php.ru/wiki/PostsController/edit?add=1" title="Создать эту страницу">?&lt;/a> extends &lt;span class="missingpage">App&amp;nbsp;Controller&lt;/span>&lt;a href="http://cake-php.ru/wiki/AppController/edit?add=1" title="Создать эту страницу">?&lt;/a> {&lt;br />
&lt;div class="indent">&lt;div class="indent">...&lt;br />
function index() {&lt;br />
&lt;div class="indent">&lt;div class="indent">$posts = $this-&amp;gt;paginate();&lt;br />
if&amp;nbsp;(isset($this-&amp;gt;params['requested'])) {&lt;br />
&lt;div class="indent">&lt;div class="indent">return $posts;&lt;br />
&lt;/div>&lt;/div>} else {&lt;br />
&lt;div class="indent">&lt;div class="indent">$this-&amp;gt;set(compact('posts'));&lt;br />
&lt;/div>&lt;/div>}&lt;br />
&lt;/div>&lt;/div>}&lt;/div>&lt;/div>
}&lt;br />
И&amp;nbsp;затем, в&amp;nbsp;элементе мы&amp;nbsp;можем получить доступ к&amp;nbsp;пронумерованной модели постов (posts). Для&amp;nbsp;получения последних пяти постов в&amp;nbsp;упорядоченный список мы&amp;nbsp;должны сделать нечто подобное:&lt;br />
&amp;lt;h2&amp;gt;Последние посты&amp;lt;/h2&amp;gt;&lt;br />
&amp;lt;?php $posts = $this-&amp;gt;requestAction('posts/index/sort:created/order:asc/limit:5'); ?&amp;gt;&lt;br />
&amp;lt;?php foreach($posts as $post): ?&amp;gt;&lt;br />
&amp;lt;ol&amp;gt;&lt;br />
&lt;div class="indent">&lt;div class="indent">&amp;lt;li&amp;gt;&amp;lt;?php echo $post['Post']['title']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;/div>&lt;/div>
&amp;lt;/ol&amp;gt;&lt;br />
&amp;lt;?php endforeach; ?&amp;gt;&lt;a name="h845-1">&lt;/a>&lt;h3>Кэширование элементов&lt;/h3>&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-03-09 20:07:47</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements/show?time=2009-03-09+20%3A07%3A47</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Views&amp;nbsp;/&amp;nbsp;Elements&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+20%3A07%3A47">2009-03-09 20:07:47&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+20%3A19%3A30">2009-03-09 20:19:30&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Вы&amp;nbsp;можете передавать данные элементу через второй аргумент элемента:&lt;br />
&amp;lt;?php echo&lt;br />
$this-&amp;gt;element('helpbox', &lt;br />
&lt;div class="indent">&lt;div class="indent">array(&amp;laquo;helptext&amp;raquo; =&amp;gt; &amp;laquo;Да, этот текст очень полезен.&amp;raquo;));&lt;/div>&lt;/div>
?&amp;gt;&lt;br />
Внутри файла элемента, все&amp;nbsp;переданные переменные доступны, как&amp;nbsp;члены массива (таким же&amp;nbsp;образом, как&amp;nbsp;set() в&amp;nbsp;контроллере работает с&amp;nbsp;файлами отображений).&lt;br />
В&amp;nbsp;примере выше файл /app/views/elements/helpbox.ctp может использовать переменную $helptext.&lt;br />
%%(php) &lt;br />
&amp;lt;?php&lt;br />
echo $helptext; //выводит  &amp;laquo;Да, этот текст очень полезен.&amp;raquo;&lt;br />
?&amp;gt;&lt;br />
Функция element() комбинирует настройки для&amp;nbsp;элемента с&amp;nbsp;передаваемыми данными. Две&amp;nbsp;настройки: 'cache' и&amp;nbsp;'plugin'. Пример:&lt;br />
&amp;lt;?php echo&lt;br />
$this-&amp;gt;element('helpbox', &lt;br />
&lt;div class="indent">&lt;div class="indent">array(&lt;br />
&lt;div class="indent">&lt;div class="indent">&amp;#147;helptext&amp;#148; =&amp;gt; &amp;laquo;Это передано в&amp;nbsp;элемент как $helptext&amp;#148;&lt;br />
&amp;#147;foobar&amp;#148; =&amp;gt; &amp;laquo;Это передано в&amp;nbsp;элемент как $foobar&amp;#148;&lt;br />
&amp;#147;cache&amp;#148; =&amp;gt; "+2 days&amp;#148; //устанавливает кэширование в&amp;nbsp;+2 days.&lt;br />
&amp;#147;plugin&amp;#148; =&amp;gt; &amp;quot;&amp;quot; //для выполнения элемента из&amp;nbsp;плагина&lt;br />
&lt;/div>&lt;/div>)&lt;/div>&lt;/div>
);&lt;br />
?&amp;gt;&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-03-08 12:30:05</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Views/Elements/show?time=2009-03-08+12%3A30%3A05</link>
<description>&lt;div class="pageBefore">&lt;img src="http://cake-php.ru/wiki/images/z.gif" width="1" height="1" border="0" alt="" style="display:block" align="top" />&lt;/div>&lt;div class="page">
&lt;b>Сравнение версий &lt;a  href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Views&amp;nbsp;/&amp;nbsp;Elements&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-08+12%3A30%3A05">2009-03-08 12:30:05&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Views/Elements?time=2009-03-09+20%3A07%3A47">2009-03-09 20:07:47&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">&lt;br />
Многие приложения имеют небольшие блоки кода, который должен быть на&amp;nbsp;каждой странице, иногда в&amp;nbsp;разных местах. Cake может помочь вам&amp;nbsp;повторять куски вашего веб-сайта, которые нужно неоднократно использовать. Эти&amp;nbsp;повторяющиеся части называются элементами. Реклама, блоки помощи, навигационный контроль, дополнительные меню и&amp;nbsp;выноски представлены в&amp;nbsp;Cake как&amp;nbsp;элементы. Элемент это&amp;nbsp;в&amp;nbsp;основном мини-отображение, которое можно включать в&amp;nbsp;другие отображения. Элементы могут быть использованы для&amp;nbsp;того, чтобы сделать ваше отображение более удобочитаемым, размещая повторяющиеся элементы в&amp;nbsp;свои собственные файлы. Они&amp;nbsp;также могут помочь вам&amp;nbsp;повторно использовать фрагменты содержимого в&amp;nbsp;вашем приложении.&lt;br />
&lt;br />
Элементы обитают в&amp;nbsp;каталоге /app/views/elements/, и&amp;nbsp;имеют расширение .ctp.&lt;br />
&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?php&amp;nbsp;&lt;/span>&lt;span style="color: #007700">echo&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">element&lt;/span>&lt;span style="color: #007700">(&lt;/span>&lt;span style="color: #DD0000">'helpbox'&lt;/span>&lt;span style="color: #007700">);&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;br />
&lt;hr noshade="noshade" size="1" />
&lt;a name="h845-1">&lt;/a>&lt;h3>Передача переменных в&amp;nbsp;элемент&lt;/h3>
&lt;br />
&lt;br />
&lt;br />
&lt;br />&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
