php - CodeIgniter 4 错误验证未读取
问题描述
我正在使用 Codeigniter 4 和 SQL 数据库处理联系表。表单会通过按钮提交,所以无论什么时候点击都是验证,如果所有的字段都填写了,显示消息并保存信息到数据库是没有问题的,但是当字段为空时,它不显示错误消息,并继续声明该文件不存在。
好吧,我现在被错误消息困住了。我不确定代码有什么问题。我错过了什么吗?
有人可以帮我吗?我很感激我能得到的所有帮助。
以下是我的代码:
应用程序/config/Routes.php
$routes->get('contact', 'Contact::contact');
$routes->post('contact/save', 'Contact::save');
应用程序/控制器/Contact.php
<?php
namespace App\Controllers;
use App\Models\ContactModel;
class Contact extends BaseController
{
public function __construct()
{
helper(['url', 'form']);
}
//CONTACT PAGE
public function contact()
{
$data = [
'meta_title' => 'Contact | MFD',
];
return view('page_templates/contact', $data);
}
//SAVE
public function save()
{
$validation = $this->validate([
'name' => [
'rules' => 'required',
'errors' => [
'required' => 'Your full name is required'
]
],
'email' => [
'rules' => 'required|valid_email|is_unique[users.email]',
'errors' => [
'required' => 'Email is required',
'valid_email' => 'You must enter a valid email',
]
],
'title' => [
'rules' => 'required',
'errors' => [
'required' => 'Title is required',
]
],
'content' => [
'rules' => 'required',
'errors' => [
'required' => 'Content is required',
]
],
]);
if (!$validation) {
return view('contact', ['validation' => $this->validator]);
} else {
// Let's Register user into db
$name = $this->request->getPost('name');
$email = $this->request->getPost('email');
$title = $this->request->getPost('title');
$content = $this->request->getPost('content');
$values = [
'name' => $name,
'email' => $email,
'title' => $title,
'content' => $content,
];
$contactModel = new ContactModel();
$query = $contactModel->insert($values);
if ($query) {
return redirect()->to('contact')->with('success', 'Your message are successful sent');
} else {
return redirect()->to('contact')->with('fail', 'Something went wrong');
}
}
}
}
应用程序/视图/page_templates/contact.php
<form action="<?= base_url('contact/save'); ?>" method="post" role="form" class="php-email-form">
<?= csrf_field(); ?>
<?php if (!empty(session()->getFlashdata('error'))) : ?>
<div class="alert alert-danger"><?= session()->getFlashdata('error'); ?></div>
<?php endif ?>
<?php if (!empty(session()->getFlashdata('success'))) : ?>
<div class="alert alert-success"><?= session()->getFlashdata('success'); ?></div>
<?php endif ?>
<div class="row">
<div class="col-md-6 form-group">
<input type="text" name="name" class="form-control" id="name" placeholder="Your Name" value="<?= set_value('name'); ?>">
<span class="text-danger"><?= isset($validation) ? display_error($validation, 'name') : '' ?></span>
</div>
<div class="col-md-6 form-group mt-3 mt-md-0">
<input type="email" class="form-control" name="email" id="email" placeholder="Your Email" value="<?= set_value('email'); ?>">
<span class="text-danger"><?= isset($validation) ? display_error($validation, 'email') : '' ?></span>
</div>
</div>
<div class="form-group mt-3">
<input type="text" class="form-control" name="title" id="title" placeholder="Title">
<span class="text-danger"><?= isset($validation) ? display_error($validation, 'title') : '' ?></span>
</div>
<div class="form-group mt-3">
<textarea class="form-control" name="content" rows="5" wrap="hard" placeholder="Message"></textarea>
<span class="text-danger"><?= isset($validation) ? display_error($validation, 'content') : '' ?></span>
</div>
<div style="height: 10px;"></div>
<div class="text-left button">
<button type="submit" name="submit">Send Message</button>
</div>
<div style="height: 10px;"></div>
</form>
解决方案
好的,我已经解决了我的代码的问题。这真的是一个小错误,或者我可以说粗心的错误哈哈现在感觉很愚蠢,但我需要改变并让它发挥作用。
这部分是:return view('contact', ['validation' => $this->validator]);
而不是那样做,我实际上错过了放置文件以正确调用视图页面,所以我只添加了我的文件夹名称
page_templates
如果我将它包含在代码中,它应该如下所示:-
return view('page_template/contact', ['validation' => $this->validator]);
然后它就可以工作了哈哈。
推荐阅读
- javascript - 无法更新用于计数字母的对象属性编号(计数器)
- javascript - 天气网络应用程序上的即时天气警报?
- powershell - 在 PowerShell 中将非文字脚本变量传递给 Invoke-Sqlcmd 时出错
- python-3.x - bs4 不返回完整的 HTML
- php - WooCommerce 添加产品标签第二个描述 + 创建短代码可以添加到 Elementor
- postgresql - “ATAL:用户“postgres 的密码验证失败”
- awk - 重复第 n 个数字直到第 n 个匹配,同时使用 awk sub 在模式中为这些数字添加前缀
- python - 在Python中删除列表中某些单词的第一个字符
- nestjs - TypeORM 获取 jsonb 数组中 id 的数据
- node.js - discord bot 分片和处理来自数组结果的对象