• CakePHP manual 中文翻译8


    第十章 数据正确性(Data Validation)

    创建用户的数据正确规则可以确保model中的数据能够按照程序的业务规则,比如密码必须是8个字符,用户名仅仅包含字母等等

    保证数据正确性,第一步要做的就是在model中创建数据正确的规则。使用Model::validate这个数组在model中定义,比如

    例10.1 /app/models/user.php

    1. <?php
    2. class User extends AppModel {
    3.    var $validate = array(
    4.       'login' => '/[a-z0-9\_\-]{3,}/i',
    5.       'password' => VALID_NOT_EMPTY,
    6.       'email' => VALID_EMAIL,
    7.       'born' => VALID_NUMBER
    8.    );
    9. }
    10. ?>

    Validations定义使用perl的正则表达式,其中有一些事先定义在/libs/validators.php比如

    VALID_NOT_EMPTY
    VALID_NUMBER
    VALID_EMAIL
    VALID_YEAR

    如果model的定义中(比如在$validate数组)出现了任何的validateions,都会在保存过程中被转化和检查(比如在 Model::save()方法中)。确保数据正确可以直接使用Model::validates()(如果数据不正确则直接返回false)或者 Model::invalidFields()(这个方法返回错误信息的一个数组)

    但是通常,controller代码中数据都是隐式的,下面的例子解释了如何创建一个处理form的方法

    1. <?php
    2. class BlogController extends AppController {
    3.    function add () {
    4.       if (empty($this->params['data'])) {
    5.          $this->render();
    6.       }
    7.       else {
    8.          $this->post->set($this->params['data']);
    9.          if ($this->post->save()) {
    10.             $this->flash('Your post has been saved.','/blog');
    11.          }
    12.          else {
    13.             $this->set('data', $this->params['data']);
    14.             $this->validateErrors($this->post);
    15.             $this->render();
    16.          }
    17.       }
    18.    }
    19. }
    20. ?>

    这个方法使用的view如下:

    1. <h2>Add post to blog</h2>
    2. <?=$this->formTag('/blog/add')?>
    3. <div class="blog_add">
    4. <p>Title: <?= $html->inputTag('title', 40)?>
    5.    <?=$this->tagErrorMsg('title', 'Title is required.')?></p>
    6. <p><?=$this->areaTag('body') ?>
    7.    <?=$this->tagErrorMsg('body', 'Body is required.')?></p>
    8. <p><?=$this->submitTag('Save')?></p>
    9. </div>
    10. </form>

    Controller::validates($model[,$model…])方法用来检查添加到model的用户数据是否正确。 Controller::validationErrors()方法返回model得到的错误信息,这些信息被view的tagErrorMsg()方法显示出来

    第十一章 访问控制表(Access Control Lists)

    1 理解ACL如何工作

    大多数权限很大的程序都需要某种形式的访问控制。ACL就是一种管理程序权限的简单持久的方法。ACL主要管理两件事情。需要东西的主体,和被需要的客体。在ACL系统中,想要东西的主体(经常情况下是用户)叫做access request objects,简称AROs。系统中被需要的客体(经常是方法或数据)叫做access control objects,简称ACOs。这些实体被成为objects是因为有时候被请求的object并不一定是人

  • 相关阅读:
    如何使用KVM 虚拟机安装RHEL7系统
    KVM虚拟机安装报错 KVM is not available
    Delphi读取不Word中不规则表格数据并转换成标准表格
    Delphi控制Excel输出上标示例
    动态设置和访问cxgrid列的Properties(转)
    PHP存储blob示例(转)
    visual studio code(vscode) 调试php(转)
    Node入门(转)
    ThinkPHP升级指导
    微信官方demo(php)
  • 原文地址:https://www.cnblogs.com/kuyuecs/p/1330411.html
Copyright © 2020-2023  润新知