教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 CakePHP 中文教程3

CakePHP 中文教程3

发布时间:2016-10-29   编辑:jiaochengji.com
教程集为您提供CakePHP 中文教程3等资源,欢迎您收藏本站,我们将为您提供最新的CakePHP 中文教程3资源

<span style="font-family: 黑体; font-size: 16pt; mso-hansi-font-family: 宋体">第五章<span lang="EN-US"> Scaffolding (</span></span><span style="font-family: 黑体; font-size: 16pt; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">脚手架<span lang="EN-US">?</span></span><span style="font-family: 黑体; font-size: 16pt; mso-hansi-font-family: 宋体" lang="EN-US">)<o:p></o:p></span>

<span lang="EN-US">Scaffolding</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">是一个很棒的途径,使得早期开发的部分</span><span lang="EN-US">web</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">应用能够运行起来。早期的数据库模式是不稳定的,很容易变化。</span><span lang="EN-US">Scaffolding</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">有个下降趋势:</span><span lang="EN-US">web</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">程序员憎恨创建以后可能根本用不到的</span><span lang="EN-US">forms</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">。为了减少程序员的这种重复劳动</span><span lang="EN-US">, Cake</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">中包含了</span><span lang="EN-US">Scaffolding</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">。</span><span lang="EN-US">Scaffolding</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">分析数据库,创建一些标准的使用</span><span lang="EN-US">add</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">、</span><span lang="EN-US">delete</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">、和</span><span lang="EN-US">edit</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">按钮的</span><span lang="EN-US">lists</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">,创建输入的</span><span lang="EN-US">forms</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">,以及查看数据库中一个</span><span lang="EN-US">item</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的标准</span><span lang="EN-US">views</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">。为了在程序中的</span><span lang="EN-US">controller</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">中添加</span><span lang="EN-US">Scaffolding</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">,需要添加</span><span lang="EN-US">$scaffold</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">变量:</span>

<span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''"> </span>注意save操作是如何放置在一个条件语句中:如果你试图保存数据到model中,cake自动尝试确数据正确(根据你提供的规则)。可以查看第十章了解更多关于正确规则(validation).如果不想查看正确性直接保存数据,使用save($data,false);

 

    其他有用的保存方法:

●savaFieldId($name,$value)

    ○保存一个单field的值

●getLastInsertID()

○返回最近创建记录的ID

 

1.4 Model的Callbacks

    在我们接近0.10.x最终版的时候,我们添加了一些model的回调函数,允许用户能够逻辑上悄悄的在model操作前或操作后执行。为了在应用中获得这种方法,在model中使用提供的参数,重载下面的这些方法

●beforeFind($conditions)

○这个回调函数在一个查询操作开始之前执行。将查询前的操作逻辑放到这个方法里面。当你在model中重写(override)这个方法时,当你想要find操作执行时候返回true,当你想要执行中止时候返回false

●afterFind($results)

○使用这个回调函数可以修改从find操作中返回的结果,或者实现其他任何的find后逻辑。这个函数的参数是model的find操作的结果,返回的是修改后的结果。

●beforeSave()

○在这个函数中放置任何保存前的逻辑。如果你像保存操作执行则返回true,否则返回false

●afterSave()

    ○放置任何你想要在保存后执行的代码在这个回调函数中

●beforeDelete()

    ○放置删除前的逻辑代码。想要删除操作执行则返回true,否则返回false

●afterDelete()

    ○放置任何你想要在删除后执行的代码在这个回调函数中

 

2. Model 变量

    当你创建你的models时候,你可以设置一些特殊的变量,来获得对Cake函数的使用。

●$primaryKey

○如果这个model关联到一个数据库的table,而且数据库的主键并不是id,那么使用这个变量来告诉Cake主键的名字

●$transactional

○告诉Cake该model是否支持传输(举例 begin/commit/rolback),设置为boolea值。

●$useTable

○如果你想使用的数据库的table并不是model名的复数形式,而且你也不想改变table名,设置这个变量为table名

●$validate

    ○确认传递给model的数据是否正确的一个数组。查看第十章

●$useDbConfig

○还记得数据库设置中,你可以在/app/config/database.php文件中设置么?使用这个变量可以交换他们

 


<span style="color: #000000">class CategoriesController extends AppController
{
    var $scaffold</span><span style="color: #008000">;
</span><span style="color: #000000">}
</span>
<span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">有关</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">Scaffold</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">,要注意一个重要的问题:</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US"> Scaffold</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">期望每个以</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">_id</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">结尾的</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">filed name</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">是一个外键并且指向一个</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">table</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">,</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">table</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">的名称和</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">_id</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">前方的一样(只不过是小写的)。所以,举个例子来说,如果你嵌套了分类,你最好有个列叫做</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">parent_id</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">。在这个版本中,最好能够命名为</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">parentid.</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">同样,在表中有一个外键(比如,</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">titles table</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">有个</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">category_id</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">)</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">,</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">并且你已经合适的联结到</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">models</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">(查看</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">6.2</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">理解联结),在</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">show/edit/newd</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">的</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">views</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">中,选择的表将会和外键的表(</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">category</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">)一起自动的表现出来(原文:</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">a select box will be automatically populated with the rows from the foreign table (category) in the show/edit/new views.</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">)。在</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">foreign model</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">中设置</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">$displayField</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">来决定</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">foreign</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">中哪些</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">field</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">会被显示。继续我们的例子,</span><span style="font-family: ''Times New Roman''; font-size: 10.5pt; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体" lang="EN-US">category</span><span style="font-family: 宋体; font-size: 10.5pt; mso-hansi-font-family: ''Times New Roman''; mso-bidi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''; mso-ansi-language: EN-US; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-bidi-font-size: 12.0pt">有个标题
<span style="color: #000000">class Title extends AppModel 
{
    var $displayField </span><span style="color: #000000">=</span><span style="color: #000000"> ''title''</span><span style="color: #008000">;
</span><span style="color: #000000">}</span>

<span style="font-family: 黑体; font-size: 16pt">第六章<span lang="EN-US"> Models<o:p></o:p></span></span>

<span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">本章内容:</span>

<span lang="EN-US">1. Model Function</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span>1.1 </span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">用户定义的</span><span lang="EN-US">Function</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span>1.2 </span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">检索</span><span lang="EN-US">(retrieving)</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">你的数据</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span>1.3 </span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">保存你的数据</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span>1.4 Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的回调(</span><span lang="EN-US">callbacks</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">)</span>

<span lang="EN-US">2. Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的变量</span>

<span lang="EN-US">3. Associations</span>

<span lang="EN-US"><o:p> </o:p></span>

<span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">是什么,它是</span><span lang="EN-US">MVC</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">模式中的</span><span lang="EN-US">M</span>

<span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">做些什么。它使得</span><span lang="EN-US">domain logic</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">和</span><span lang="EN-US">presentation</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">分隔开,独立</span><span lang="EN-US">application logic(It separates domain logic from the presentation, isolating application logic.)</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">一个</span><span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">概要的说就是一个指向数据库的</span><span lang="EN-US">access</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">,更具体,就是数据库中的特定的</span><span lang="EN-US">table</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">。默认的,每个</span><span lang="EN-US">model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">都使用自身名字复数形式的</span><span lang="EN-US">table</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">,比如,</span><span lang="EN-US">User Mode</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">使用</span><span lang="EN-US"> users</span>

<span lang="EN-US">table</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">。</span><span lang="EN-US">Models</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">可以维护数据特定的规则,联结信息以及它使用的</span><span lang="EN-US">table</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的方法。</span>

<span lang="EN-US"><o:p> </o:p></span>

<span lang="EN-US"><o:p> </o:p></span>

<span style="font-family: 宋体; mso-bidi-font-size: 10.5pt" lang="EN-US">1. Model</span><span style="font-family: 宋体; mso-bidi-font-size: 10.5pt">的方法<span lang="EN-US"><o:p></o:p></span></span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">从</span><span lang="EN-US">PHP</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的观点看,</span><span lang="EN-US">models</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">都是从</span><span lang="EN-US">AppModel</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">类继承来的类。类</span><span lang="EN-US">AppModel</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">原始是定义在</span><span lang="EN-US"> /cake</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">目录下。你也可以创建自己的放在</span><span lang="EN-US"> app/app_model.php.</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">这个文件应该包含一些可供多个</span><span lang="EN-US">models</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">共享的方法。</span><span lang="EN-US">AppModel</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">本身也是从</span><span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">类继承而来的,</span><span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">类是一个标准的</span><span lang="EN-US">Cake</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">库,定义在</span><span lang="EN-US"> libs/model.php</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">注意</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">虽然本节介绍的是</span><span lang="EN-US">Model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">中常用的方法,然而记住:更详细的参考请到</span><span lang="EN-US">http://api.cakephp.org</span>

<span lang="EN-US"><o:p> </o:p></span>

<span lang="EN-US">1.1 </span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">用户定义的方法</span>

<span lang="EN-US"><span style="mso-tab-count: 1">       </span></span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">下面是</span><span lang="EN-US">model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">中一个特定</span><span lang="EN-US">table</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的例子,该例子实现了在</span><span lang="EN-US">blog</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">中显示和隐藏两种方法</span>

<span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">例</span><span lang="EN-US">6.1<span style="mso-spacerun: yes">  </span>Example Model Functions
</span>


<span style="color: #000000"><?php
class Post extends AppModel
{
   function hide ($id</span><span style="color: #000000">=</span><span style="color: #000000">null)
   {
      if ($id) $this->setId($id)</span><span style="color: #008000">;
</span><span style="color: #000000">      $this->set(''hidden''</span><span style="color: #000000">,</span><span style="color: #000000"> ''</span><span style="color: #000000">1</span><span style="color: #000000">'')</span><span style="color: #008000">;
</span><span style="color: #000000">      $this->save()</span><span style="color: #008000">;
</span><span style="color: #000000">   }
 
   function unhide ($id</span><span style="color: #000000">=</span><span style="color: #000000">null)
   {
      if ($id) $this->setId($id)</span><span style="color: #008000">;
</span><span style="color: #000000">      $this->set(''hidden''</span><span style="color: #000000">,</span><span style="color: #000000"> ''</span><span style="color: #000000">0</span><span style="color: #000000">'')</span><span style="color: #008000">;
</span><span style="color: #000000">      $this->save()</span><span style="color: #008000">;
</span><span style="color: #000000">   }
}
?></span>

<span lang="EN-US">1.2 </span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">检索数据</span>

<span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">下面是使用</span><span lang="EN-US">model</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">得到数据的一些标准方法</span>

<span style="font-family: 宋体">●<span lang="EN-US">findAll($conditions,$fields,$order,$limit,$page,$recursive)<o:p></o:p></span></span>

<span style="font-family: 宋体">○返回特定的<span lang="EN-US">fields</span>,<span lang="EN-US">fields</span>由<span lang="EN-US">$limit(</span>默认是<span lang="EN-US">50)</span>个记录,匹配<span lang="EN-US">$conditions(</span>如果有<span lang="EN-US">)</span>,从第<span lang="EN-US">$page(</span>默认<span lang="EN-US">1)</span>页开始列表,<span lang="EN-US">$conditions</span>内容应该像<span lang="EN-US">SQL</span>语句中的一样,比如:</span><span lang="EN-US">$conditions=”race = ‘wookie’ AND thermal_detonators><st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="”" w:st="on">3”</st1:chmetcnv></span>

<span style="font-family: 宋体">○当<span lang="EN-US">$recursive</span>选项设置成<span lang="EN-US">1</span>到<span lang="EN-US">3</span>的整数,<span lang="EN-US">findAll()</span>将会试图返回在联结到该<span lang="EN-US">model</span>中发现的所有项的<span lang="EN-US">models.</span>这项递归寻找可以深入<span lang="EN-US">3</span>层。<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体">●<span lang="EN-US">find($conditions, $fields, $order, $recursive)<o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">○返回匹配<span lang="EN-US">$conditions</span>的第一条记录的制定的<span lang="EN-US">fields(</span>如果没有指定则返回全部<span lang="EN-US">)<o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">○<span lang="EN-US">$recursive</span>作用同上<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体">●<span lang="EN-US">findAllBy<FieldName>($value) and findBy<FieldName>($value)<o:p></o:p></span></span>

<span style="font-family: 宋体">○这些奇妙的方法可以用于指定特定的<span lang="EN-US">field</span>和特定的<span lang="EN-US">value</span>快速查找行<span lang="EN-US">,</span>你要做的就是把你的<span lang="EN-US">field</span>用驼峰表达法添加在后面。举个例子(用于<span lang="EN-US">controller</span>中)
</span>


<span style="color: #000000">$this->Post->findByTitle(''My First Blog Post'')</span><span style="color: #008000">;
</span><span style="color: #000000">$this->Author->findByLastName(''Rogers'')</span><span style="color: #008000">;
</span><span style="color: #000000">$this->Property->findAllByState(''AZ'')</span><span style="color: #008000">;
</span><span style="color: #000000">$this->Specimen->findAllByKingdom(''Animalia'')</span><span style="color: #008000">;</span>
<span lang="EN-US"><o:p>

<span style="font-family: 宋体">返回的结果是一个数组,和<span lang="EN-US">find()</span>以及<span lang="EN-US">findAll()</span>返回的结果是一个形式<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体">●<span lang="EN-US">field($name,$conditions,$order)<o:p></o:p></span></span>

<span style="font-family: 宋体">○根据<span lang="EN-US">$order</span>排序,根据条件<span lang="EN-US">$conditions</span>,将第一条记录中的<span lang="EN-US">field</span>值,作为<span lang="EN-US">string</span>返回<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体">●<span lang="EN-US">findCount($conditions)<o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">○返回匹配<span lang="EN-US">$conditions</span>的记录的个数<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体">●<span lang="EN-US">generateList<o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US">($conditions=null,$order=null,$limit=null,$keyPath=null,$valuePath=null)<o:p></o:p></span>

<v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"><v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></v:shapetype><span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">○根据<span lang="EN-US">models</span>的<span lang="EN-US">lists</span>,得到一系列<span lang="EN-US">key</span>的值,特别是根据<span lang="EN-US">model list</span>创建<span lang="EN-US"><select>list</span>。<span lang="EN-US">$conditions, $order, $limit</span>参数使用方法和上面相同。<span lang="EN-US">$keyPath</span>和<span lang="EN-US">$valuePath</span>是你告诉<span lang="EN-US">model</span>那里去找<span lang="EN-US">keys</span>和<span lang="EN-US">values</span>来成<span lang="EN-US">list</span>。举个例子,基于<span lang="EN-US">Role model,</span>你想生成一个由<span lang="EN-US">ids(</span>类型<span lang="EN-US">integer)</span>当作<span lang="EN-US">key</span>,由<span lang="EN-US">roles</span>当作<span lang="EN-US">value</span>的<span lang="EN-US">list</span>,这个方法调用形式如下:</span><span style="mso-no-proof: yes"> </span><span style="font-family: 宋体" lang="EN-US"><o:p></o:p></span>


<span style="color: #000000">$this->set(
    ''Roles''</span><span style="color: #000000">,</span><span style="color: #000000">
    $this->Role->generateList(null</span><span style="color: #000000">,</span><span style="color: #000000"> ''role_name ASC''</span><span style="color: #000000">,</span><span style="color: #000000"> null</span><span style="color: #000000">,</span><span style="color: #000000"> ''id''</span><span style="color: #000000">,</span><span style="color: #000000"> ''role_name'')
)</span><span style="color: #008000">;
</span><span style="color: #000000">
//This would return something like:
array(
    ''</span><span style="color: #000000">1</span><span style="color: #000000">'' </span><span style="color: #000000">=</span><span style="color: #000000">> ''Account Manager''</span><span style="color: #000000">,</span><span style="color: #000000">
    ''</span><span style="color: #000000">2</span><span style="color: #000000">'' </span><span style="color: #000000">=</span><span style="color: #000000">> ''Account Viewer''</span><span style="color: #000000">,</span><span style="color: #000000">
    ''</span><span style="color: #000000">3</span><span style="color: #000000">'' </span><span style="color: #000000">=</span><span style="color: #000000">> ''System Manager''</span><span style="color: #000000">,</span><span style="color: #000000">
    ''</span><span style="color: #000000">4</span><span style="color: #000000">'' </span><span style="color: #000000">=</span><span style="color: #000000">> ''Site Visitor''
)</span><span style="color: #008000">;</span>

<span style="font-family: 宋体">●<span lang="EN-US">read($fields=null, $id=null)<o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">○使用这个方法从当前装载的记录或者由<span lang="EN-US">$id</span>指定的记录中得到<span lang="EN-US">fields</span>和值<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><o:p> </o:p></span>

<span style="font-family: 宋体" lang="EN-US"><o:p> </o:p></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">特定的<span lang="EN-US">Sql</span>调用可以使用<span lang="EN-US">model</span>的<span lang="EN-US">findBySql()</span>方法。举例,在<span lang="EN-US">blog</span>应用中,我想存储一个发贴者的<span lang="EN-US">first name</span>到一个<span lang="EN-US">table</span>中,但是这个<span lang="EN-US">table</span>并不是我的<span lang="EN-US">cake schema</span>中的一部分。我就可以通过这个<span lang="EN-US">model</span>中的一个特定的方法<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><o:p> </o:p></span>

<span style="font-family: 宋体">例<span lang="EN-US">6.2 Custom Sql Calls With findBySql()<o:p></o:p></span></span>


<span style="color: #000000"><?php
class Post extends AppModel
{
        function posterFirstName()
        {
          $ret </span><span style="color: #000000">=</span><span style="color: #000000"> $this->findBySql(</span><span style="color: #000000">"</span><span style="color: #000000">SELECT first_name FROM posters_table 
                                   WHERE poster_id = 1</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #008000">;
</span><span style="color: #000000">          $firstName </span><span style="color: #000000">=</span><span style="color: #000000"> $ret</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">0</span><span style="color: #800000; font-weight: bold">][</span><span style="color: #800000">''first_name''</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #008000">;
</span><span style="color: #000000">          return $firstName</span><span style="color: #008000">;
</span><span style="color: #000000">        }
}
?></span>

<span style="font-family: 宋体">当然也有<span lang="EN-US">query()</span>方法,如果执行成功返回<span lang="EN-US">true,</span>失败返回<span lang="EN-US">false</span>。因为<span lang="EN-US">query</span>语句并不是都返回结果集。比如“<span lang="EN-US">DELETE FROM problems WHERE solved = true</span>”<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><o:p> </o:p></span>

<span style="font-family: 宋体" lang="EN-US">1.3 </span><span style="font-family: 宋体">保存数据<span lang="EN-US"><o:p></o:p></span></span>

<span style="font-family: 宋体" lang="EN-US"><span style="mso-tab-count: 1">    </span></span><span style="font-family: 宋体">为了保存你的数据到<span lang="EN-US">model</span>中,你应该向<span lang="EN-US">model</span>提供你想要保存的数据。这些数据提交给<span lang="EN-US">save()</span>方法应该以下面的形式保存<span lang="EN-US"><o:p></o:p></span></span>


<span style="color: #000000">Array
(
    </span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">modelname</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000"> </span><span style="color: #000000">=</span><span style="color: #000000">> Array
        (
            </span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">fieldname1</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000"> </span><span style="color: #000000">=</span><span style="color: #000000">> value
            </span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">fieldname2</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000"> </span><span style="color: #000000">=</span><span style="color: #000000">> value
        )
)</span>
   

<span style="font-family: 宋体">从<span lang="EN-US">form</span>表单提交(<span lang="EN-US">post</span>方法)的数据会自动排列成这种形式,并且放置到<span lang="EN-US">controller</span>中的</span><span lang="EN-US">$this->params[‘data’],</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">因此,通过</span><span lang="EN-US">web</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的</span><span lang="EN-US">form</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">表单保存数据非常简单。一个</span><span lang="EN-US">controller</span><span style="font-family: 宋体; mso-hansi-font-family: ''Times New Roman''; mso-ascii-font-family: ''Times New Roman''">的编辑方法可能会像下面这样显示:</span>



<span style="color: #000000">function edit($id) 
{
   //Note: The property model is automatically loaded for us at $this->property.     
   // Check to see if we have form data 
   if (isset($this->params</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">''form''</span><span style="color: #800000; font-weight: bold">][</span><span style="color: #800000">''data''</span><span style="color: #800000; font-weight: bold">][</span><span style="color: #800000">''property''</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">)) 
   {  
      // Here''s where we try to save our data
      if ($this->property->save($this->params</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">''data''</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">)) 
      {
         //Show the user that her data has been saved
         $this->flash(''Your information has been saved.''</span><span style="color: #000000">,</span><span style="color: #000000">            
 ''/properties/edit/''.$this->params</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">''data''</span><span style="color: #800000; font-weight: bold">][</span><span style="color: #800000">''property''</span><span style="color: #800000; font-weight: bold">][</span><span style="color: #800000">''id''</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">,</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">)</span><span style="color: #008000">;
</span><span style="color: #000000">         exit()</span><span style="color: #008000">;
</span><span style="color: #000000">      }
      else
      {
         //If the data couldn''t be validated</span><span style="color: #000000">,</span><span style="color: #000000"> show the validation errors
         //and repopulate form fields with submitted data
         $this->set(''form''</span><span style="color: #000000">,</span><span style="color: #000000"> $this->params</span><span style="color: #800000; font-weight: bold">[</span><span style="color: #800000">''data''</span><span style="color: #800000; font-weight: bold">]</span><span style="color: #000000">)</span><span style="color: #008000">;
</span><span style="color: #000000">         $this->validateErrors($this->property)</span><span style="color: #008000">;
</span><span style="color: #000000">         $this->render()</span><span style="color: #008000">;
</span><span style="color: #000000">      }      
   }   
   //If no form data was submitted</span><span style="color: #000000">,</span><span style="color: #000000"> just render the edit view
   $this->render()</span><span style="color: #008000">;
</span><span style="color: #000000">}</span>
</o:p></span></span>

 

<

您可能感兴趣的文章:
PHP开发框架的现状和展望
php框架需要掌握什么
常用php代码开发工具有哪些?
php写网站步骤
写php需要什么软件?
php还有用吗
php文件可以用什么软件打开?
php到底好不好
PHP 框架,第 3 部分: 用户验证
php文件用什么编辑打开?

[关闭]
~ ~