Html 如何使用控制器和视图在codeigniter4中应用表单验证?
这里定义了带有表单验证和查看文件的codeigniter4控制器。如何在有错误的查看页面上反映。 控制器代码未反映在视图页面上。有人能澄清codeigniter4验证的问题吗 控制器Html 如何使用控制器和视图在codeigniter4中应用表单验证?,html,css,codeigniter-4,Html,Css,Codeigniter 4,这里定义了带有表单验证和查看文件的codeigniter4控制器。如何在有错误的查看页面上反映。 控制器代码未反映在视图页面上。有人能澄清codeigniter4验证的问题吗 控制器 public function register_user(){ helper(['form', 'url']); $this->validation = \Config\Services::validation(); $validation = $this->validati
public function register_user(){
helper(['form', 'url']);
$this->validation = \Config\Services::validation();
$validation = $this->validation;
$rules = [
'user_name' => [
'required' => 'All accounts must have usernames provided',
],
];
$this->validation->setRules([
'user_name' => 'required|min_length[2]',
],
$rules
);
if (! $this->validate($rules))
{
$validationErrors = $this->validation->getErrors();
return redirect()->back()->withInput()->with('errors', $validationErrors);
}
}
看法
登录注册
.错误{颜色:红色;}
请在这里登记
你可以试试这个控制器
public function register_user(){
helper('form');
if (! $this->validate([
'user_name' => 'required|min_length[3]|max_length[255]'
]))
{
echo view('user/login');
}
else{
echo view('user/login_view');
}
}
这种观点:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Login Registration</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" media="screen" title="no title">
</head>
<body>
<h2></h2>
<style type="text/css">
.error{color: red;}
</style>
<span style="background-color:red;">
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">Please do Registration here</h3>
</div>
<div class="panel-body">
<form role="form" method="post" action="<?php echo base_url('user/register_user'); ?>">
<fieldset>
<div class="form-group">
<?= esc($user_name); ?>
<span class="error"><?= \Config\Services::validation()->listErrors(); ?></span>
<input class="form-control" placeholder="Please enter Name" name="user_name" type="text" autofocus>
</div>
<input class="btn btn-lg btn-success btn-block" type="submit" value="Register" name="register" >
</fieldset>
</form>
<center><b>You have Already registered ?</b> <br></b><a href="<?php echo base_url('user/login_view'); ?>"> Please Login</a></center>
</div>
</div>
</div>
</div>
</div>
</span>
</body>
</html>
这篇帖子没有经过验证,但是万迪老虎的回复对我来说是可以的
有了几个规则,您可以简单地执行以下操作:
$validation = $this->validate([
'user_name' => 'required|min_length[10]|max_length[255]',
'user_pass' => 'required|min_length[10]|max_length[255]'
]);
if($validation)
{
echo view('user/login');
}
else{
echo view('user/login_view');
}
//重定向时保留旧的输入值,以便old()
函数可以使用它们
return redirect()->back()->withInput();
//设置一条闪光消息
return redirect()->back()->with('foo', 'message');
在您的示例中,您已经将这两种方法结合在一起,这是行不通的
因为您试图在视图中访问的变量$validation不包含任何数据,因为您尚未为其分配任何数据
所以你必须更换
使用此代码:
不要更改视图文件中的任何内容
return redirect()->back()->withInput();
return redirect()->back()->with('foo', 'message');
if (! $this->validate($rules))
{
$validationErrors = $this->validation->getErrors();
return redirect()->back()->withInput()->with('errors', $validationErrors);
}
if (! $this->validate($rules))
{
$data['validation'] = $this->validatior;
return view('view-name',$data); //note don't forget to replace view-name.
}