我目前使用CodeIgniter 4.3.3版
我用CRUD建立博客网站。并创建张贴功能…
当我试图创建一个表单的目的是创建张贴(插入到数据库),它工作得很好…但是当尝试添加验证功能(创建错误消息)时,它不起作用…你能告诉我少了什么吗/有什么问题吗?
航线配置:
$routes->get('/', 'Pages::index');
$routes->get('/blogs', 'Blogs::index');
$routes->get('/blogs/create', 'Blogs::create');
$routes->post('/blogs/post', 'Blogs::post');
$routes->get('/blogs/(:segment)', 'Blogs::detail/$1');
控制器:
// method create (here is form)
public function create()
{
session();
$data = [
'title' => 'Post Blog',
'validation' => ConfigServices::validation()
];
return view('blogs/create', $data);
}
// method post for insert to db
public function post()
{
// validasi input
if (!$this->validate([
'judul' => 'required|is_unique[blogs.judul]',
'konten' => 'required',
])) {
$validation = ConfigServices::validation();
// this line is my problem, validation didnt works. (only redirect works)
return redirect()->to('blogs/create')->withInput()->with('validation', $validation);
}
$slug = url_title($this->request->getVar('judul'), '-', true);
$this->blogsModel->save([
'judul' => $this->request->getVar('judul'),
'konten' => $this->request->getVar('konten'),
'slug' => $slug,
'gambar' => 'post.png',
]);
session()->setFlashdata('post', 'Artikel berhasil diposting.');
return redirect()->to('blogs');
}
查看错误信息:
<?= $validation->listErrors(); ?>
<form action="<?= site_url('blogs/post') ?>" method="post">
<?= csrf_field(); ?>
...
<div class="invalid-feedback">
<?= $validation->getError('judul'); ?>
</div>
我想让我的表单输入验证工作。如果有其他方法可以使用,请告诉我……谢谢!
使用return redirect()->to('blogs/create')->withInput();
返回验证结果
与$validation->listErrors()
或$validation->showError('judul')
一起显示
您使用的方法(getError($error)
)是用于后端数据处理。
来源:https://codeigniter4.github.io/userguide/libraries/validation.html?highlight=validation redirect-and-validation-errors
谢谢你的帮助…我已经解决了…在CodeIgniter 4.3.3不能使用
$validation = ConfigServices::validation();
$validation->listErrors();
改为:
validation_list_errors();
// or
validation_show('inputField');
但是你需要form helper来执行这个函数…所以使用它吧!
// controler method:
helper('form');
// view form
<?= form_open('action/link'); =>
...
<?= form_close(); =>