今天来学习怎么写页面
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端看到了