我有一個視圖用戶,其中包含了一個模式表單和一個從用戶表填充的資料表。我通過按鈕訪問模態表單。我在代碼點火器 4 中進行了一些驗證。當我在模式中正確輸入所有欄位時,資料將發送到資料庫,但如果我省略一個欄位,在重定向時,我會收到錯誤 [ ErrorException Invalid argument provided for foreach()對用戶] 好心幫助。
我的控制器代碼...
<?php
namespace App\Controllers;
use App\Models\userModel;
class UserController extends BaseController{
public function getData(){
$model=new userModel();
$data['userData']=$model->findAll();
return view('admin_template/users',$data);
}
public function insertUser(){
helper(['url']);
if($this->request->getMethod()==='post'){
$modeluser=new userModel();
$session=session(); //load session service
$data=[
"userName"=>$this->request->getVar("userName"),
"email"=>$this->request->getVar("email"),
"slocation"=>$this->request->getVar("slocation"),
"designation"=>$this->request->getVar("designation"),
"pwd"=>$this->request->getVar("pwd"),
"cpwd"=>$this->request->getVar("cpwd")
];
$validationRules=[
'userName'=>'required|min_length[5]|max_length[100]',
'email'=>'required|valid_email|is_unique[users.email]',
'slocation'=>'required',
'designation'=>'required',
'pwd'=>'required|min_length[5]|alpha_numeric',
'cpwd'=>'required|matches[pwd]'
];
$modeluser->setValidationRules($validationRules);
$fieldValidationMessage=[
'username'=>[
'required'=>'Name is required',
'min_length'=>'minimum length of name should be 5 chars',
'max_length'=>'maximum length of name should be 5 chars'
],
'email'=>[
'required'=>'Email is required',
'valid_email'=>'Enter a valid email',
'is_unique'=>'Email already exists'
],
'slocation'=>[
'required'=>'Location not selected',
],
'designation'=>[
'required'=>'Designation not selected',
],
'pwd'=>[
'required'=>'Password cannot be empty',
'min_length'=>'minimum length of password should be 5 chars',
'alpha_numeric'=>'password should contain alpha-numeric characters'
],
'cpwd'=> [
'required'=>'Confirm password cannot be empty',
'matches'=>' Confirm password does not match'
]
];
$modeluser->setValidationMessages($fieldValidationMessage);
if($modeluser->save($data)===false){
return view('admin_template/users',[
'errors'=>$modeluser->errors()
]);
} else{
$session->setFlashdata("success","User added successfully");
return redirect()->to(base_url('user'));
}
}
return view('admin_template/users');
}
}
我的查看代碼
<?php
use Config\Services;
?>
<?= $this->extend('admin_template/index') ?>
<!-- Begin Page Content -->
<?= $this->section('content') ?>
<!-- Modal-->
<div class="card">
<div class="card-body">
<?php
// to print success message
if(session()->get("success")){
?>
<div class="alert alert-success">
<?= session()->get("success") ?>
</div>
<?php } ?>
<?php if(!empty($errors)) : ?>
<div class="alert alert-danger">
<?php foreach ($errors as $field=>$error):?>
<p><?= $error?></p>
<?php endforeach ?>
</div>
<?php endif ?>
</div>
</div>
<div class="modal fade" id="addUserProfile" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add User</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form action="<?= base_url('user')?>" method="post">
<?=csrf_field()?>
<div class="modal-body">
<div class="form-group" >
<label class="col-form-label">User Name </label>
<input type="text" class="form-control" name="userName" placeholder="Enter Users full name">
</div>
<div class="form-group">
<label class="col-form-label">Email</label>
<input type="email" class="form-control" name="email" placeholder="Enter Users email">
</div>
<div class="form-group ">
<label class="col-form-label">Location</label>
<select class="custom-select my-1 mr-2" name="slocation" >
<option selected>Choose Location</option>
<option Value="Mombasa" >Mombasa</option>
<option value="Emali">Emali</option>
<option Value="Mlolongo">Mlolongo</option>
<option Value="Nairobi">Nairobi</option>
<option value="Mai Mahiu">Mai mahiu</option>
<option value="Salgaa">Salgaa</option>
<option value="Eldoret">Eldoret</option>
<option value="Malaba">Malaba</option>
</select>
</div>
<div class="form-group">
<label class="col-form-label">Designation</label>
<select class="custom-select my-1 mr-2" name="designation">
<option selected>Choose Designation</option>
<option value="Admin">Admin</option>
<option value="Technical Support">Technical Support</option>
<option value="Installer">Installer</option>
<option value="Controller">Controller</option>
</select>
</div>
<div class="form-group">
<label class="col-form-label">Password</label>
<input type="password" class="form-control" name="pwd" placeholder="Enter Password" >
</div>
<div class="form-group">
<label >Confirm Password</label>
<input type="password" class="form-control" name="cpwd" placeholder="Confirm Password">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary"> Save </button>
</div>
</form>
</div>
</div>
</div>
<div class="container-fluid">
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">User Profile
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addUserProfile">
Add User
</button>
</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" >
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Email</th>
<th>Location</th>
<th>Designation</th>
<th>Created At</th>
</tr>
</thead>
<tbody>
<?php
foreach ($userData as $item):?>
<tr>
<td><?php echo $item['userid']?></td>
<td><?php echo $item['userName']?></td>
<td><?php echo $item['email']?></td>
<td><?php echo $item['slocation']?></td>
<td><?php echo $item['designation']?></td>
<td><?php echo $item['created_at']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
[錯誤]
uj5u.com熱心網友回復:
我通過將資料傳遞給將驗證錯誤回傳給視圖的方法解決了這個問題。
$modeluser->setValidationMessages($fieldValidationMessage);
$userdata = $this->getData();// called the method to get userdata.
if($modeluser->save($data)===false){
return view('admin_template/users',[$userdata,
'errors'=>$modeluser->errors() // Passed userdata to the view.
]);
} else {
$session->setFlashdata("success","User added successfully");
return redirect()->to(base_url('user'));
}
return view('admin_template/users');
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/427944.html
標籤:php 形式 codeigniter-4
下一篇:大O表示法和凱撒密碼
