热搜:NVER node 开发 php

ThinkPHP自动验证的问题

2024-09-05 19:35:01
ThinkPHP自动验证的问题

thinkphp在model中定义了自动验证之后,使用$this->display(模板)之后,之前页面输入的所有东西就没有了,请问在thinkphp中有什么方法可以让以前输入的东西还在,并且聚焦到错误的输入框内。


回复讨论(解决方案)

给你个思路

如果你用的ajax,那当$create()表单验证失败时,用getError()方法获取错误信息,将之前验证时传过来的参数加上错误信息返回过去,ajax那里设置回调函数对信息进行处理。

如果不是ajax的话,可以考虑在模板中使用session值作为错误信息,没有时写空字符串,验证失败时将错误信息写入对应session,返回后模板将进行显示,验证成功后注意清除对应session。

聚焦的话如果多个填错你打算聚到哪个?

给你个思路

如果你用的ajax,那当$create()表单验证失败时,用getError()方法获取错误信息,将之前验证时传过来的参数加上错误信息返回过去,ajax那里设置回调函数对信息进行处理。

如果不是ajax的话,可以考虑在模板中使用session值作为错误信息,没有时写空字符串,验证失败时将错误信息写入对应session,返回后模板将进行显示,验证成功后注意清除对应sessio……
所有的出错框的背景色显示为红色,聚焦从上到下,从左到右的第一个。。

引用 1 楼 Anew_G 的回复:给你个思路

如果你用的ajax,那当$create()表单验证失败时,用getError()方法获取错误信息,将之前验证时传过来的参数加上错误信息返回过去,ajax那里设置回调函数对信息进行处理。

如果不是ajax的话,可以考虑在模板中使用session值作为错误信息,没有时写空字符串,验证失败时将错误信息写入对应sessi……

这些用js控制呀

thinkphp在model中定义了自动验证之后,使用$this->display(模板)之后,之前页面输入的所有东西就没有了,请问在thinkphp中有什么方法可以让以前输入的东西还在,并且聚焦到错误的输入框内。
              
                  thinkphp
模板页面用jquery的Ajax方法提交到action,action中做判断,根据不同的错误返回不同的值,末班页面根据不同的返回值,输出不同的错误提示,且定位到指定的输入框。

如果需要详细解决方案,请直接回复我。

引用 楼主 shaozengwei 的回复:thinkphp在model中定义了自动验证之后,使用$this->display(模板)之后,之前页面输入的所有东西就没有了,请问在thinkphp中有什么方法可以让以前输入的东西还在,并且聚焦到错误的输入框内。
              
                  thinkphp
模板页面用jquery的…… 刚才点错了,不好意思。。。
还想追问你一个问题,是thinkphp的ajax上传的问题,在百度上查是说,在页面上加一个iframe然后加几个input框,可是我照的网上说的加完之后,没有反应。后台可以接收到上传 的文件。还是继续使用ajaxReturn返回json数据。能不能贴一下源码。。。

如果需要详细解决方案,请直接回复我。 请贴一下源码。。

你用js就可以实现,提交触发事件。

引用 5 楼 nowphp 的回复:如果需要详细解决方案,请直接回复我。请贴一下源码。。

$.post("{:U('index/index/check')}", {name:name}, function(result){					if(result == -1){						alert('输入名字不存在');						return false;									}else if(result == -2){						alert('输入名字不合法');						return false;					}				});	

index/indexAction.class.php
function check(){    $name=$_POST['name'];    $map['name']=$name;    $result=M('user')->where($map)->find();    if($result){      echo -1;exit;     }     if(!isAble($name)){      echo -2;exit;     }}

$('#id_input').focus();

上面的第一个alert应该说是已经存在

引用 7 楼 shaozengwei 的回复:
引用 5 楼 nowphp 的回复:如果需要详细解决方案,请直接回复我。请贴一下源码。。


JavaScript code
?



1234567891011

$.post("{:U('index/index/check')}", {name:name}, function(result){ …… 聚焦这个问题,是不知道哪个控件出错了,所以不知道聚焦到哪个控件而且我是要提交一个表单。。需要上传视频。

可以贴出你的代码,让我们look一下

可以贴出你的代码,让我们look一下


public function uploadVideo(){			//dump($_POST);			$info = $this->upload('temp');		}				public function upload($module = '', $path = '', $thumb = '', $width = '', $height = '') {		  $module = $module = ""?'temp':$module;		  switch ($module){			   case 'temp':$path = C(ATTACHDIR) . '/temp/' . $path;				break;			   case 'storehouse':$path = C(ATTACHDIR) . '/storehouse/' . $path;				break;			   case 'shop':$path = C(ATTACHDIR) . '/shop/' . $path;				break;			   case 'trader': $path = C(ATTACHDIR) . '/trader/' . $path;				break;			   case 'group': $path = C(ATTACHDIR) . '/group/' . $path;				break;			   case 'my': $path = C(ATTACHDIR) . '/avatar/' . $path;				break;			   default:$path = C(ATTACHDIR) . '/file/' . $path;		  }		 		  if (!is_dir($path)) @mkdir($path);		  import("ORG.Net.UploadFile");		 		  $upload = new UploadFile();		  $upload->maxSize = C(ATTACHSIZE);		  $upload->allowExts = explode(',', strtolower(C(ATTACHEXT)));		  $upload->savePath = $path;		  $upload->saveRule = 'uniqid';		  //$upload->allowTypes=array('jpg');		  //empty($thumb)?$upload->thumb = C(ATTACH):$upload->thumb = $thumb;		  //empty($width)?$upload->thumbMaxWidth = C(THUMBMAXWIDTH):$upload->thumbMaxWidth = $width;		  //empty($height)?$upload->thumbMaxHeight = C(THUMBMAXHEIGHT):$upload->thumbMaxHeight = $height;		  if (!$upload->upload()){		  		if($this->isAjax()){					$this->ajaxReturn(array("errorMsg"=>$upload->getErrorMsg()),'uploadError',2);		  					  		}else{		  			return $this->error($upload->getErrorMsg());			  		}		  }else{		  		if($this->isAjax()){		   			$this->ajaxReturn(array('info' => 'info'),'info',1);		  		}else{		  			return $upload->getUploadFileInfo();		  		}		  }	 }

问题已经解决。做一个static方法就可以了。结贴