<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>CakePHP - Manual/Developing/Behaviors/CreatingBehaviors</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Behaviors/CreatingBehaviors</link>
<description>History/revisions of CakePHP/Manual/Developing/Behaviors/CreatingBehaviors</description>
<language>en-us</language>
<item>
<title>2009-03-05 20:48:12</title>
<link>http://cake-php.ru/wiki/Manual/Developing/Behaviors/CreatingBehaviors/show?time=2009-03-05+20%3A48%3A12</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.behaviors.creatingbehaviors" href="http://cake-php.ru/wiki/Manual/Developing/Behaviors/CreatingBehaviors" class="">/Manual&amp;nbsp;/&amp;nbsp;Developing&amp;nbsp;/&amp;nbsp;Behaviors&amp;nbsp;/&amp;nbsp;Creating&amp;nbsp;Behaviors&lt;/a> за &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Behaviors/CreatingBehaviors?time=2009-03-05+20%3A48%3A12">2009-03-05 20:48:12&lt;/a> и &lt;a href="http://cake-php.ru/wiki/Manual/Developing/Behaviors/CreatingBehaviors">2009-03-08 12:15:45&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Добавлено:&lt;/b>&lt;br />
&lt;div class="additions">Поведения, подключенные к&amp;nbsp;моделям, имеют свои колбэки, вызываемые автоматически. Эти&amp;nbsp;колбэки подобны колбэкам моделей: beforeFind, afterFind, beforeSave, afterSave, beforeDelete, afterDelete и&amp;nbsp;onError.&lt;br />
Полезно использовать встроенные поведения, как&amp;nbsp;образец для&amp;nbsp;создания вашего собственного. Найти их&amp;nbsp;можно в&amp;nbsp;cake/libs/models/behaviors/.&lt;br />
Каждый колбэк в&amp;nbsp;качестве первого параметра получает ссылку на&amp;nbsp;модель, из&amp;nbsp;которой он&amp;nbsp;вызывается.&lt;br />
Кроме того, вы&amp;nbsp;можете добавить настройки для&amp;nbsp;поведения. Информация об&amp;nbsp;определении настроек может быть найдена в&amp;nbsp;главе о&amp;nbsp;встроенных поведениях и&amp;nbsp;их настройке.&lt;br />
Пример, который иллюстрирует, как&amp;nbsp;настройки поведения могут быть переданы из&amp;nbsp;модели в&amp;nbsp;поведение:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&lt;br />&lt;/span>&lt;span style="color: #007700">class&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">Post&amp;nbsp;&lt;/span>&lt;span style="color: #007700">extends&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">AppModel&amp;nbsp;&lt;/span>&lt;span style="color: #007700">{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$name&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'Post'&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">var&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$actsAs&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'YourBehavior'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'option1_key'&amp;nbsp;&lt;/span>&lt;span style="color: #007700">=&amp;gt;;&amp;nbsp;&lt;/span>&lt;span style="color: #DD0000">'option1_value'&lt;/span>&lt;span style="color: #007700">));&lt;br />}&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Начиная с&amp;nbsp;версии 1.2.8004, &lt;!--notypo-->CakePHP&lt;!--/notypo--> добавляет эти&amp;nbsp;настройки только один раз&amp;nbsp;для модели/алиаса. Для&amp;nbsp;дальнейшего обновления поведения вы&amp;nbsp;должны соблюдать алиасы (или модели).&lt;br />
Дружественная к&amp;nbsp;обновлению, функция setup будет выглядеть подобным образом:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
&lt;span style="color: #0000BB">&amp;lt;?&lt;br />&lt;/span>&lt;span style="color: #007700">function&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">setup&lt;/span>&lt;span style="color: #007700">(&amp;amp;&lt;/span>&lt;span style="color: #0000BB">$model&lt;/span>&lt;span style="color: #007700">,&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">$settings&lt;/span>&lt;span style="color: #007700">)&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!isset(&lt;/span>&lt;span style="color: #0000BB">$this&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">settings&lt;/span>&lt;span style="color: #007700">[&lt;/span>&lt;span style="color: #0000BB">$model&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">alias&lt;/span>&lt;span style="color: #007700">]))&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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">settings&lt;/span>&lt;span style="color: #007700">[&lt;/span>&lt;span style="color: #0000BB">$model&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">alias&lt;/span>&lt;span style="color: #007700">]&amp;nbsp;=&amp;nbsp;array(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #FF8000">//&amp;nbsp;'option1_key'&amp;nbsp;=&amp;gt;&amp;nbsp;'option1_default_value',&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;'option2_key'&amp;nbsp;=&amp;gt;&amp;nbsp;'option2_default_value',&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;'option3_key'&amp;nbsp;=&amp;gt;&amp;nbsp;'option3_default_value',&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;span style="color: #007700">);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&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">settings&lt;/span>&lt;span style="color: #007700">[&lt;/span>&lt;span style="color: #0000BB">$Model&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">alias&lt;/span>&lt;span style="color: #007700">]&amp;nbsp;=&amp;nbsp;&lt;/span>&lt;span style="color: #0000BB">array_merge&lt;/span>&lt;span style="color: #007700">(&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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">settings&lt;/span>&lt;span style="color: #007700">[&lt;/span>&lt;span style="color: #0000BB">$Model&lt;/span>&lt;span style="color: #007700">-&amp;gt;&lt;/span>&lt;span style="color: #0000BB">alias&lt;/span>&lt;span style="color: #007700">],&amp;nbsp;(array)&lt;/span>&lt;span style="color: #0000BB">$settings&lt;/span>&lt;span style="color: #007700">);&lt;br />}&lt;br />&lt;/span>&lt;span style="color: #0000BB">?&amp;gt;&lt;/span>
&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>
