silverstripe学习(继续)

 今天来学习怎么写页面

 1、数据相关页面,比方说要建立一个表,那么需要在sapphire/security下面建立一个类的php,继承自dataobject,将设计好的字段全部写到该类中作为成员变量static $db的数组中,像自增id,classname,created这样的是数据库自己会自动建立的,就不需要写了,只需要将有实际意义的写入就可以了,另外static $indexes 指的是索引类型,在这里可以定义索引字段,如果数据库有所改变的话最好在这里也改一下,否则再别的页面使用到该类的数据库操作的时候,没有在这里声明的字段,是没有作用的

例如这样

class SchoolClass extends DataObject {
 
 static $db = array(

  "SchoolClassName" => "Varchar",    //school class name
  "Editedby" => "Varchar",     //infomation is edited by
  "Grade" => "Int",       //grade from 1 to 12 
 );
 
}

2、然后更新数据库,访问db/build/?flush=1的这个地址,你想要的数据库就会建好了

3、需要些前端的页面了,一个web页面,最基本的操作就是有些文本框可以提交,首先学习怎么写这些web元素

文本框就是TextField,如下

$userText = new TextField(
  $name = "name",
  $title = "Name",
  $value = "Please enter your name"
 );

$userText就是这个元素的名字,$name就是这个文本框的名字,这个用在获取该文本框post的值的时候用到,$title这个是显示在文本框旁边的文字提示,$value就是写在文本框里的内容

除此以外还有,密码类型:PasswordField,文本域TextAreaField等类似的,可以查看ss的官网api获取http://doc.silverstripe.com/doku.php?id=form-field-types

值的提出的是单选框和hidden类型

单选框以下为例

$userClassField = new OptionsetField(
       $name = "ChooseClass",
       $title = "选择班级",
       $source = $CList,
       $value = $chosed
    );

别的都不多说了,单说一下$source,这个值是一个数组,形式是这样的

$Clist = Array (

     0=>"apple"

     1=>"orange"

)

数组的序号就是每个单选框的值,后面的内容就会显示成为单选框的内容,

$value 就是该单选框的值,基本上就是一个数字,指的是所选的单选框的值即可
hidden 主要是为了隐藏传送一些值,用法:

$hiddentext = new HiddenField (
      $name = "hidden",
      $title = "title",
      $value = ""  );

意义与之前的文本框等一样,

下面就要构造页面了,将之前构造好的页面的各个元素,全都放到FieldSet里去

如:

$fields = new FieldSet($classNameField,$gradeNumber,$provinceField,$CountryField);

括号里的全是上文中构造好的页面元素的名字

 $actions = new FieldSet(
         new FormAction('doClassInfoForm', 'Submit')
      );

这个是提交页面的动作,表示用函数doClassInfoForm来完成提交的动作,下文要构造好这么个doClassInfoForm提交函数,当然,函数名可以随便起

return new Form($this, 'ClassInfoForm', $fields, $actions);

这个就是该函数classInfoForm最后的返回,包括提交的元素,动作等

另外可以添加这么一个调用$validator = new RequiredFields('name', 'password');

这样页面会检验括号里的元素是不是为空,如果是空的就会报错,括号里的就是元素的文本框名称,跟元素名不一样,下面就是构造提交的函数了doClassInfoForm

function doClassInfoForm(){

}中间的函数体不再细说跟一般的php没啥区别,该获取post指就获取,该操作数据库就操作

这样我们一个可以提交的页面就产生了,但是还没有结束

我们还需要通过模板使我们的页面显示出来

在模板的路径/templates/lauout里写一个跟提交页面同名的.ss模板文件

文件里只需要调用你需要的函数就可以了,例如,我的php页面叫做classform.php,里面的构造页面的函数叫做ClassInfoForm,那么我的模板页面就叫做classform.ss,里面写入

<div id="ClassInfoForm">
    $ClassInfoForm

</div>

就可以了,然后从ss的后天建立一个新的页面,就是这个classform.ss,把它的pagetype指为classform这样就可以在web端看到了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值