Php 错误代码点火器验证
我非常了解如何编写igniter/OOP,但我正在尝试,在这一点上有点困惑 我有两个功能。一种是从模型加载数据的搜索。另一个是save函数 我的问题是,当运行Php 错误代码点火器验证,php,codeigniter,oop,Php,Codeigniter,Oop,我非常了解如何编写igniter/OOP,但我正在尝试,在这一点上有点困惑 我有两个功能。一种是从模型加载数据的搜索。另一个是save函数 我的问题是,当运行save()时,我遇到了错误,因为它试图显示验证错误,但我们不再拥有从search()函数获得的数据库数据 我觉得将搜索中的所有细节都包含在这个保存功能中是多余的,这就是为什么我认为我做错了什么 public function search() { // Define some vars $data
save()
时,我遇到了错误,因为它试图显示验证错误,但我们不再拥有从search()
函数获得的数据库数据
我觉得将搜索中的所有细节都包含在这个保存功能中是多余的,这就是为什么我认为我做错了什么
public function search()
{
// Define some vars
$data['title'] = 'Submit Attrition';
$data['js_file'] = 'submit.js';
// Load our helper
$this->load->helper('form');
// Get the user and pass it to the model
$empQID = $this->input->post('empQID');
$data['userDetails'] = $this->submit_model->get_details($empQID);
$data['languages'] = $this->submit_model->get_languages();
$data['types'] = $this->submit_model->get_types();
$data['ratings'] = $this->submit_model->get_ratings();
$data['processes'] = $this->submit_model->get_processes();
// Send the data to the views
$this->load->view('templates/header', $data);
$this->load->view('submit/search', $data);
$this->load->view('templates/footer', $data);
}
/**
* Validate & save attrition submission
*
* @author Carl
* @return void
*/
public function save()
{
$data['title'] = 'Submit Attrition';
$this->load->library('form_validation');
$this->form_validation->set_rules('language', 'Supporting Language', 'required');
// Validation failed, show form w/ validation errors
if ($this->form_validation->run() === FALSE)
{
$this->load->view('templates/header', $data);
$this->load->view('submit/search', $data);
$this->load->view('templates/footer', $data);
}
else
{
// Success : Send data to model
$this->submit_model->save_attrition();
$this->load->view('templates/header', $data);
$this->load->view('submit/success', $data);
$this->load->view('templates/footer', $data);
}
}
我不确定我是否完全理解你的问题,但我想我理解你想做什么。在CodeIgniter中,您可以执行以下操作:
class MyController
{
// this controller action will load whether the form is submitted or not
// $user_id is set by the router
public function save($username)
{
// if the users not in the database, throw a 404 error
$user = $this->db->get_where('users', ['username' => $username]);
if(!$user) {
return show_404();
}
// if it's not a post request, then the form hasn't been submitted
// so don't bother validating it
if($router->fetch_method() === 'POST' && $form_validation->run() === TRUE)
{
$user['name'] = $this->input->post('name');
$this->db->update('users', $user);
$this->load->view('success_page');
// return so we don't render the form again
return;
}
// this will happen in all cases, __except__ when the form was submitted
// with valid data
$this->load->view('form');
}
}
为了简洁起见(比如加载相关库),我跳过了细节,因为我记不清所有CI语法。是
save
还是search
映射到不同路由的单独操作?两者都在控制器submit
中。我首先找到用户,它通过post将用户ID发送到submit/search
。然后,表单被发布到submit/save
。问题是submit/search是数据库调用生成要填写的表单的地方。然后,当提交/保存发生并且验证失败时,我们不再像在其他函数中那样从数据库中获取这些值。我会尝试更好地解释它,看看它是否有用。步骤1:index()
加载一个请求用户名的字段。第2步:将数据发布到/submit/search
,加载一个包含所有用户信息的页面,允许您对其进行编辑。步骤3:一旦您更改了数据,它将发布到submit/save
。但是,当出现验证错误时,我们不再拥有从submit/search
加载到其他函数的用户数据。这有意义吗?@SBB是的-我在这里写的动作正好可以处理这个问题。只需一个操作即可显示表单、验证表单并使用表单中的有效数据更新数据库='POST'我认为这是无效的;正在尝试解决它。方法返回SAVE,而不是POST。这是您要查找的HTTP方法,不是PHP方法,因为如果是GET请求,则表单尚未提交。请尝试$this->input->POST()。