<?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/">
<channel>
<title>成刚网志 &amp;amp;&amp;amp; CBolg Application</title>
<link>http://chenggang.net</link>
<description><![CDATA[记录我的网事历程，架起沟通的桥梁！欢迎留言！
]]></description>
<lastBuildDate>Sun, 20 May 2012 22:43:39 +0800</lastBuildDate>
<copyright>Copyright &amp;copy; 2012 by CBolg Application.</copyright>
<language>zh-cn</language>
<pubDate>Mon, 21 May 2012 12:54:31 +0800</pubDate>
<item>
<title>Yii Framework的gii使用方法及模板</title>
<summary><![CDATA[	Yii Framework 1.1.2版本中已经有了gii，
	就是一个基于web的脚手架！可以生成模型，控制器，视图等！
	
	一、配置
	配置protected/config/main.php
	
	&#39;modules&#39;=&gt;array(
	&#39;gii&#39;=&gt;array(
	&#39;class&#39;=&gt;&#39;system.gii.G...]]></summary>
<description><![CDATA[<p>
	Yii Framework 1.1.2版本中已经有了gii，<br />
	就是一个基于web的脚手架！可以生成模型，控制器，视图等！<br />
	<br />
	一、配置<br />
	配置protected/config/main.php</p>
<pre class="brush:php;" title="code">
&#39;modules&#39;=&gt;array(
&#39;gii&#39;=&gt;array(
&#39;class&#39;=&gt;&#39;system.gii.GiiModule&#39;,
&#39;password&#39;=&gt;&#39;123456&#39;,
//&#39;ipFilters&#39;=&gt;array(&#39;192.168.1.101&#39;),
//如果用IP访问,这里需配置相应的IP
),
 ),</pre>
<p>
	我们可以通过以下链接来访问: /index.php?r=gii<br />
	&nbsp;</p>
<ol>
	<li>
		进入生成器页面；</li>
	<li>
		填写字段以指定代码生成器的参数。例如，要使用module 生成器创建一个新模块，你需要指定模块ID；</li>
	<li>
		点击 Preview 按钮预览生成的代码。你将看到一个表展示了将被生成的一个代码文件列表。你可以点击其中的任何文件以预览代码。</li>
	<li>
		点击 Generate 按钮以生成代码文件；</li>
	<li>
		查看代码生成日志。</li>
</ol>
<p>
	<a name="readmore"></a><br />
	二、自定义模板</p>
<p>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;尽管默认的代码生成器已经可以产生很强大的代码，我也经常希望能定制他们或者创建个新的来满足我们的需求，例如，我们希望生成的代码能符合我们的编码风格，或者我们希望代码能支持国际化，这些都可以轻松的通过Gii实现 Gii 可以通过两种模式进行扩展：定制代码模板来扩展已有的代码生成器，和编写新的代码生成器。<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gii 通过GiiModule::generatorPaths属性设置的路径搜索可用的代码生成器。如果需要定制，我们可以在应用的配置中如下配置这个属性。<br />
	&#39;gii&#39; &nbsp;&nbsp;=&gt; array(<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;class&#39; &nbsp;=&gt; &#39;system.gii.GiiModule&#39;,<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;password&#39; =&gt; &#39;123456&#39;,<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;generatorPaths&#39;=&gt;array( &#39;application.gii&#39;), //除了在默认的system.gii.generators之外，还在路径别名为application.gii的目录下检索可用的代码生成器<br />
	&nbsp;&nbsp;),<br />
	&nbsp;&nbsp;&nbsp; 有可能会在不同的目录底下有相同名字的代码生成器，这种情况下在GiiModule::generatorPaths中最先指定的，具有优先权。</p>
<p>
	<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们首先创建一个名为protected/gii/model/templates/compact的路径。这里的model意味着我们要重写摩尔恩的model代码生成器。templates/compact 表示我们要添加一个新的代码模板，名字为compact，然后我们修改应用的配置，把application.gii加入到 GiiModule::generatorPaths中，如同上面所叙现在打开model代码生成器页面。点击代码模板字段，在出现的下拉框里我们能看到我们新加的模板路径compact，如果我们选择这个模板来生成代码，我们会看到一个错误，那是因为我们还没有在compact底下放入任何的实际代码模板。</p>
<p>
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面开始我们真正的自定义的工作。打开文件protected/gii/model/templates/compact/model.php进行编辑。记住这个文件会像被作为视图文件使用，这意味着它可以包含PHP语句和声明。让我们修改模板，以便生成器产生的attributeLabels()方法，使用Yii::t()来对标签支持国际化。<br />
	<span class="php-hl-reserved">public</span> <span class="php-hl-reserved">function</span> <span class="php-hl-identifier">attributeLabels</span><span class="php-hl-brackets">(</span><span class="php-hl-brackets">)</span><br />
	<span class="php-hl-brackets">{</span><br />
	&nbsp;&nbsp;&nbsp; <span class="php-hl-reserved">return</span> <span class="php-hl-reserved">array</span><span class="php-hl-brackets">(</span><br />
	<span class="php-hl-code">&lt;?</span><span class="php-hl-identifier">php</span> <span class="php-hl-reserved">foreach</span><span class="php-hl-brackets">(</span><span class="php-hl-var">$labels</span> <span class="php-hl-reserved">as</span> <span class="php-hl-var">$name</span><span class="php-hl-code">=&gt;</span><span class="php-hl-var">$label</span><span class="php-hl-brackets">)</span><span class="php-hl-code">: ?&gt;<br />
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?</span><span class="php-hl-identifier">php</span> <span class="php-hl-reserved">echo</span> <span class="php-hl-quotes">&quot;</span><span class="php-hl-string">&#39;</span><span class="php-hl-var">$name</span><span class="php-hl-string">&#39; =&gt; Yii::t(&#39;application&#39;, &#39;</span><span class="php-hl-var">$label</span><span class="php-hl-string">&#39;),</span><span class="php-hl-special">\n</span><span class="php-hl-quotes">&quot;</span><span class="php-hl-code">; ?&gt;<br />
	&lt;?</span><span class="php-hl-identifier">php</span> <span class="php-hl-reserved">endforeach</span><span class="php-hl-code">; ?&gt;<br />
	&nbsp;&nbsp;&nbsp; </span><span class="php-hl-brackets">)</span><span class="php-hl-code">;</span><br />
	<span class="php-hl-brackets">}</span></p>
<p>
	<span class="php-hl-brackets">在每一个代码模板，我们可以访问一些预定义的变量，例如上面例子中的$labels。这些变量由相应的代码生成器产生。不同的代码生成器在他们各自的模板中可能产生不同的变量。请仔细阅读默认代码模板的中的描述。</span></p>
<br />
]]></description>
<link>http://chenggang.net/posts/99</link>
<pubDate>Sun, 30 May 2010 08:59:25 +0800</pubDate>
<author>小豆</author>
<category>Framework</category>
<guid isPermaLink="true">http://chenggang.nethttp://chenggang.net/posts/99</guid>
</item>
</channel></rss>
