简单模型

使用入门

假设你要实现一个前台的form表单向后台提交数据,提交的数据你并不需要保存在数据库之中。这时候你就可以使用SampleModel了。

看下面的例子:

控制器mmsz.php:

//简单模型记录前台密码
$m = new SampleModel('password');

if($m->try_post()){//密码被传入

    if($m->new != $m->again){
        Session::once('cperr','两次密码不一致!');
        return;
    }
    $admin = new Model('admin');
    $admin->id = Session::get('uid');
    $admin->password = $m->old;
    if(!$admin->is_real(array('id','password'))){
        Session::once('cperr','原始密码不正确!');
        return;
    }
    $admin->password = $m->new;
    if($admin->save()){
        Session::once('cpsuc','密码修改成功!');
        $m = new SampleModel('password');
    }
}

视图内容mmsz.html:

<div id="content" style="margin: 0px 0px 0px 0px;">
        <!-- content / right -->
        <div id="right" style="margin: 0px 0px 0px 0px;">
            <!-- table -->
            <div class="box" style="margin: 0px 0px 0px 0px;">
                <!-- box / title -->
                <div class="title">
                    <h5>
                    <a href='javascript:;'>密码修改</a>
                    </h5>
                    <div class="search">
                    <button type="button" onclick="goto_back();">返回</button>
                    </div>
                </div>                  
                <form action="mmsz.html" method="post"> {tk()}

                <h4 style="color: red">{Session::flush('cperr')}</h4>
                <h4 style="color: blue">{Session::flush('cpsuc')}</h4>
                <table style="width: 100%" width="100%">
                    <tr>
                    <td style="width: 150px;">
                    原始密码:
                    </td>
                    <td>
                    {$m->password('old','class="formmid"')}
                    </td>
                    </tr>
                    <tr>
                    <td style="width: 150px;">
                    新密码:
                    </td>
                    <td>
                    {$m->password('new','class="formmid"')}
                    </td>
                    </tr>
                    <tr>
                    <td style="width: 150px;">
                    密码确认:
                    </td>
                    <td>
                    {$m->password('again','class="formmid"')}
                    </td>
                    </tr>
                    <tr>
                    <td colspan="2" align="center" style="border: none;">
                    <button type="submit" style="float:inherit; display: block;">数据提交</button>
                    </td>
                    </tr>
                    </table>                
            </form>
            </div>
        </div>
        <!-- end content / right -->
    </div>

上例控制器中的前10行是简单模型的初始化和信息提交。验证成功才保存到数据库表admin中。

admin表的操作方法请参阅下一节的数据库模型

方法列表

__construct

SampleModel::__construct(string $tablename, string $postid) 
构造函数

Parameters: 
string $tablename 虚拟表名 
string $postid 表单提交的区分ID

$postid用来区分相同表名的模型,区分$postid之后同一个页面就可以提交多个相同类型的模型了。

all

SampleModel::all(string $names) 
所有有效的数据都输出hidden标签
这是一种页面参数整体传递的简便方式
为了便于灵活覆盖,建议将其放在Form的最顶端(tk方法之后)
把页面信息放在页面中是很不安全的,所以强烈建议只在新增时使用此方法

Parameters: 
string $names 字段名称数组
Returns:
  string 标签html字串

elid

SampleModel::elid(string $name) 
获得页面标签的id   
Parameters:

string $name 字段名称 标签name
Returns:
  string 标签id 

elname

SampleModel::elname(string $name) 
获得页面标签的name
如果开启了表单令牌此处获得的name是经过框架加密的(防止恶意信息提交)

Parameters:

string $name 字段名称 标签name
Returns:
  string 标签id 

field_form_name

SampleModel::field_form_name(string $name) 
取得属性再Form中的name(未经加密的)

Parameters:  
string $name 字段名称 标签name
Returns:
  string

load_from_get

SampleModel::load_from_get() 
根据get请求内容填充这个Model
这个方法通常用在信息检索页面的批量属性提交
切不可用此方法得来的数据进行CUD操作!

Returns:
  Model 模型本身

load_from_post

SampleModel::load_from_post() 
根据post请求内容填充这个Model
这是表单字段自动提交的最常用方法

Returns:
  Model 模型本身

try_get

SampleModel::try_get() 
试探行的填充这个model 如果能填充则采用post填充并返回:true否则返回:false

Returns:
  boolean 

try_post

SampleModel::try_post() 
试探行的填充这个model 如果能填充则采用post填充并返回:true否则返回:false

Returns:
  boolean