<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Pais porrada de Bethrezen &#187; dotplant</title> <atom:link href="http://blog.bethrezen.ru/tag/dotplant/feed" rel="self" type="application/rss+xml" /><link>http://blog.bethrezen.ru</link> <description>Блог веб-программиста</description> <lastBuildDate>Sat, 27 Aug 2011 08:51:33 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <item><title>Создаём расширяемую структуру на Yii Framework</title><link>http://blog.bethrezen.ru/2009/09/yii-framework-addons-structure.html</link> <comments>http://blog.bethrezen.ru/2009/09/yii-framework-addons-structure.html#comments</comments> <pubDate>Wed, 16 Sep 2009 15:36:38 +0000</pubDate> <dc:creator>Bethrezen</dc:creator> <category><![CDATA[Code]]></category> <category><![CDATA[caction]]></category> <category><![CDATA[dotplant]]></category> <category><![CDATA[yii]]></category><guid
isPermaLink="false">http://blog.bethrezen.ru/?p=222</guid> <description><![CDATA[Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на Yii Framework. Я уже писал как сделать свои Actions на Yii. Сегодня же речь пойдёт о написании стандартных экшенов для контроллеров и их расширения. Предположим, в приложении у нас все контроллеры наследуются от класса dotPlantFrontMainController. Нам необходимо, чтобы у всех контроллеров было действие Breadcrumb. Для этого, [...]]]></description> <content:encoded><![CDATA[<p>Хочу предложить Вашему вниманию концепт расширяемой структуры приложения на <strong>Yii Framework</strong>. Я уже писал как сделать <a
href="http://blog.bethrezen.ru/2009/05/yii-action.html">свои Actions на Yii</a>.</p><p>Сегодня же речь пойдёт о написании стандартных экшенов для контроллеров и их расширения.</p><p>Предположим, в приложении у нас все контроллеры наследуются от класса dotPlantFrontMainController.</p><p>Нам необходимо, чтобы у всех контроллеров было действие Breadcrumb.</p><p>Для этого, в базовом контроллере dotPlantFrontMainController переопределяем функцию <strong>actions</strong>() следующим образом:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;color: #FCFFBA;"><span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> actions<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
 <span style="color: #009900;color: #CCC;">&#123;</span>
 <span style="color: #b1b100;color:#DD2A24;font-weight:bold;">return</span> <span style="color: #990000;color: #8FB394;">array</span><span style="color: #009900;color: #CCC;">&#40;</span>
 <span style="color: #0000ff;">'breadcrumb'</span> <span style="color: #339933;color: #CCC;">=&gt;</span> <span style="color: #0000ff;">'application.extensions.actionBreadcrumb'</span><span style="color: #339933;color: #CCC;">,</span>
 <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
 <span style="color: #009900;color: #CCC;">&#125;</span></pre></div></div><p>Если в унаследованном контроллере(скажем News) мы используем экшены из других файлов, то нам необходимо также переопределить функцию примерно вот так:</p><div
class="wp_syntax"><div
class="code"><pre class="php" style="font-family:monospace;color: #FCFFBA;"><span style="color: #000000; font-weight: bold;color: #577A61;">public</span> <span style="color: #000000; font-weight: bold;color: #577A61;">function</span> actions<span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span>
 <span style="color: #009900;color: #CCC;">&#123;</span>
 <span style="color: #666666; font-style: italic;color: #CDC;">// return external action classes, e.g.:</span>
 <span style="color: #b1b100;color:#DD2A24;font-weight:bold;">return</span> <span style="color: #990000;color: #8FB394;">array_merge</span><span style="color: #009900;color: #CCC;">&#40;</span>
 parent<span style="color: #339933;color: #CCC;">::</span><span style="color: #004000;">actions</span><span style="color: #009900;color: #CCC;">&#40;</span><span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">,</span>
 <span style="color: #990000;color: #8FB394;">array</span><span style="color: #009900;color: #CCC;">&#40;</span>
 <span style="color: #0000ff;">'admin'</span><span style="color: #339933;color: #CCC;">=&gt;</span><span style="color: #0000ff;">'application.controllers.News.ActionAdmin'</span><span style="color: #339933;color: #CCC;">,</span>
 <span style="color: #009900;color: #CCC;">&#41;</span>
 <span style="color: #009900;color: #CCC;">&#41;</span><span style="color: #339933;color: #CCC;">;</span>
 <span style="color: #009900;color: #CCC;">&#125;</span></pre></div></div><p>Таким образом, в News будут экшены определенные в базовом классе <strong>dotPlantFrontMainController</strong> плюс ActionAdmin.</p><p>Переписать же actionBreadcrumb можно уже в теле самого News.</p><p>В итоге имеем легко расширяемую структуру. В самом же базовом классе массив actions можно автоматически генерировать в соответствии с установленными расширениями. Всё легко и просто <img
src='http://blog.bethrezen.ru/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Создаём расширяемую структуру на Yii Framework" class='wp-smiley' title="Создаём расширяемую структуру на Yii Framework" /></p> ]]></content:encoded> <wfw:commentRss>http://blog.bethrezen.ru/2009/09/yii-framework-addons-structure.html/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using apc
Database Caching 24/41 queries in 0.023 seconds using apc

Served from: blog.bethrezen.ru @ 2012-02-06 13:54:01 -->
