验证信息的循环
发布于:2022-01-17 09:50:54
#1 hygzs
var $verifier = array(
"rules" => array( // 规则
'name' => array( // 这里是对username的验证规则
'notnull' => TRUE, // username不能为空
'minlength' => 5, // username长度不能小于5
'maxlength' => 12, // username长度不能大于12
),
),
"messages" => array( // 提示信息
'name' => array(
'notnull' => "姓名不能为空",
'minlength' => "姓名不能少于5个字符",
'maxlength' => "姓名不能大于20个字符",
'youare' => "看来你不是jake", // 没有出现在规则中的信息提示
),
)
);
function insert(){
$data=spClass("materialModel");
$namt=array('name'=>$_POST['name']);
$list=$data->find($namt);//判断是否重名
$data->verifier = $data->verifier; // 切换验证规则
if( false == $data->spVerifier($this->spArgs()) ){
$data->create($this->spArgs());
$this->success("添加成功", spUrl("materialAction","index"));
}else{
foreach($data as $item){
foreach($item as $msg){
$this->error($msg,spUrl("materialAction","add"));
}
}
}
}
现在可以提示了,请问怎么
用foreach来循不输出验证提示?我现在这样写提示的全是Array,循环规则不对,请帮忙指正,谢谢!
2011-09-04 10:49:11
#2 jake
可以先把$data给dump出来
dump($data);
看看内容是什么,然后根据smarty的变量循环来循环出来
http://www.speedphp.com/view-template-array.html
2011-09-04 16:29:22
#3 hygzs
我这个不是在模板中输出,是要在控制器中判断验证错误信息
模型代码
class materialModel extends spModel{
public $pk="id";
public $table="material";
var $verifier = array(
"rules" => array( // 规则
'name' => array( // 这里是对username的验证规则
'notnull' => TRUE, // username不能为空
'minlength' => 5, // username长度不能小于5
'maxlength' => 12, // username长度不能大于12
),
),
"messages" => array( // 提示信息
'name' => array(
'notnull' => "材料名不能为空",
'minlength' => "材料名不能少于5个字符",
'maxlength' => "材料名不能大于12个字符",
),
)
);
控制器代码
function insert(){
$data=spClass("materialModel");
$namt=array('name'=>$_POST['name']);
$list=$data->find($namt);//判断是否重名
if($list){
$this->error("该物料已存在", spUrl("materialAction","add"));
}
$data->verifier = $data->verifier; // 切换验证规则
if( false == $data->spVerifier($this->spArgs())){
$data->create($this->spArgs());
$this->success("添加成功", spUrl("materialAction","index"));
}else{
foreach($data as $item){ //当物料名为空提示错误
foreach($item as $msg){
$this->error($msg,spUrl("materialAction","add"));
}
}
}
}
我 dump($data); 出来的就是模型里面的代码。
如果我没写名称就提示 材料名不能为空, 名字过长或过短就提示长或短的信息
请问怎么在控制器中写这个循环呀?
2011-09-04 17:49:48
#4 hygzs

dump的数据,弹出的Array就是验证的提示
2011-09-04 17:55:51
#5 jake
这里
if( false == $data->spVerifier($this->spArgs())){
$data->create($this->spArgs());
$this->success("添加成功", spUrl("materialAction","index"));
}else{
foreach($data as $item){ //当物料名为空提示错误
foreach($item as $msg){
$this->error($msg,spUrl("materialAction","add"));
}
}
}
改成
$ver = $data->spVerifier($this->spArgs());
if( false == $ver ){
添加成功
}else{
foreach($ver as $msg){
$this->error($msg,spUrl("materialAction","add"));
}
}
spVerifier返回值就是错误提示,如果返回值(上例是$ver)是false,那么就证明没有错。
可以dump($ver);出来看看就知道了。
2011-09-04 18:02:29
#6 hygzs
谢谢老大指点
再加一个foreach就好了
foreach($ver as $msg){
foreach($msg as $info){
$this->error($info,spUrl("materialAction","add"));
}
}
2011-09-04 18:41:54
#7 daixingchen0
var $pk = "s_id";
var $table = "sang"; // 数据表的名称
//验证规则
var $verifier = array
(
"rules" => array( // 规则
's_fenlei' => array('notnull' => true,'minlength' => 6,'maxlength' => 60),
),
"messages" => array( // 提示信息
's_fenlei' => array('notnull' => "分类不能为空!",'minlength' => "分类名必须大于6个字符",'maxlength' => "分类名不能超过60个字符"),
)
);
2013-07-24 15:46:37
#8 daixingchen0
请问我这个有错误么。。即使分类不为空 为什么老提示分类不能为空呢 :L 大神告诉下我啊
2013-07-24 15:49:27