PHP语言之CakePHP中文教程3
小标 2018-11-14 来源 : 阅读 730 评论 0

摘要:本文主要向大家介绍了PHP语言之CakePHP中文教程3,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言之CakePHP中文教程3,通过具体的内容向大家展示,希望对大家学习php语言有所帮助。


第五章 Scaffolding (脚手架?)


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


 注意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文件中设置么?使用这个变量可以交换他们

 




class CategoriesController extends AppController

{

    var $scaffold;

}



有关Scaffold,要注意一个重要的问题: Scaffold期望每个以_id结尾的filed name是一个外键并且指向一个table,table的名称和_id前方的一样(只不过是小写的)。所以,举个例子来说,如果你嵌套了分类,你最好有个列叫做parent_id。在这个版本中,最好能够命名为parentid.同样,在表中有一个外键(比如,titles table有个category_id),并且你已经合适的联结到models(查看6.2理解联结),在show/edit/newd的views中,选择的表将会和外键的表(category)一起自动的表现出来(原文:a select box will be automatically populated with the rows from the foreign table (category) in the show/edit/new views.)。在foreign model中设置$displayField来决定foreign中哪些field会被显示。继续我们的例子,category有个标题

class Title extends AppModel 

{

    var $displayField = ''title'';

}

第六章 Models


本章内容:


1. Model Function


       1.1 用户定义的Function


       1.2 检索(retrieving)你的数据


       1.3 保存你的数据


       1.4 Model的回调(callbacks)


2. Model的变量


3. Associations


 


Model是什么,它是MVC模式中的M


Model做些什么。它使得domain logic和presentation分隔开,独立application logic(It separates domain logic from the presentation, isolating application logic.)


       


       一个Model概要的说就是一个指向数据库的access,更具体,就是数据库中的特定的table。默认的,每个model都使用自身名字复数形式的table,比如,User Mode使用 users


table。Models可以维护数据特定的规则,联结信息以及它使用的table的方法。


 


 


1. Model的方法


       从PHP的观点看,models都是从AppModel类继承来的类。类AppModel原始是定义在 /cake目录下。你也可以创建自己的放在 app/app_model.php.这个文件应该包含一些可供多个models共享的方法。AppModel本身也是从Model类继承而来的,Model类是一个标准的Cake库,定义在 libs/model.php


       注意


       虽然本节介绍的是Model中常用的方法,然而记住:更详细的参考请到//api.cakephp.org


 


1.1 用户定义的方法


       下面是model中一个特定table的例子,该例子实现了在blog中显示和隐藏两种方法


例6.1  Example Model Functions





class Post extends AppModel

{

   function hide ($id=null)

   {

      if ($id) $this->setId($id);

      $this->set(''hidden'', ''1'');

      $this->save();

   }

 

   function unhide ($id=null)

   {

      if ($id) $this->setId($id);

      $this->set(''hidden'', ''    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言PHP频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程