codeigniter创建控制器以编辑数据库行的最佳方法

时间:2013-06-11 17:59:28

标签: codeigniter

我是codeigniter的新手,我正在用它开发我的第一个Web应用程序,并希望确保我第一次做最佳实践,所以我不必回去进行修正。话虽如此,这就是我正在做的事情。

我想在数据库中编辑一个注释,然后在更新记录后重定向到另一个页面。

我的模型编码正确所以我不担心,但控制器看起来像这样(这可能不正确:

public function edit($id) {
    $this->load->model('Notes_model');

    if (isset($_POST["edit"]))
    {
    $data['data']  = $this->Notes_model->edit($id);
        $url = "/Notes/view/" . $id;
        redirect($url);
    }
    $data['notes'] = $this->Notes_model->viewNotes($id);
    $this->load->view('templates/header');
    $this->load->view('notes/edit', $data);
    $this->load->view('templates/footer');

}

希望这是有道理的,基本上我想要做的是: 1.)显示编辑注释页面 2.)如果我通过点击提交来编辑该页面     a。)更新数据库     b。)重定向到不同的页面。

这看起来相当不错还是应该做出更好的改变?

2 个答案:

答案 0 :(得分:0)

虽然您的控制器代码很好,但有一点需要注意,您应该在控制器的load modelconstructor,这样您就不必在每个功能中包含该模型相同的建议对于libraries, helpers,这是最佳做法

class myclass extends CI_Controller {
 function __construct() {
 parent::__construct();
 $this->load->model('Notes_model');
 $this->load->helper(form);
 }

 public function myfunction(){

 }
}

以下是MVC标准advanced-codeigniter-techniques-and-tricks

的入门教程

答案 1 :(得分:0)

<?php
class Home extends CI_Controller
{
    function __construct() {
    parent::__construct();

    $this->m_auth->notLogin();
    $this->load->library('form_validation');
    $this->load->library('ajax_pagination');
    $this->load->library('dateconverter');
    $this->load->helper('template');
    $this->load->helper('check');
    $this->load->model('mymodels/crud_model');
    $this->lang->load('personal',  $this->m_auth->get_language());
    $this->lang->load('global',  $this->m_auth->get_language());        
}

function index()
{
    $this->get_recs(); 
}

function get_recs()
{
    //get for view or first page to be showed
}
/**
 * Register New User
 */
function updateRecords()
{

    $this->form_validation->set_rules('ministery','<span class="req">(Ministry)</span>','trim|required');
    $this->form_validation->set_rules('directorate','<span class="req">(Directorate)</span>','trim|required');
    if($this->form_validation->run()==FALSE)
    {
        header_tpl($this->m_auth->get_language(),'a');
        banner_tpl($this->m_auth->get_language(),'a');
        left_tpl($this->m_auth->get_language(),'a');
        $content = $this->load->view('personal/edit_personal',  $this->POST,true);
        content_tpl($content);
        footer_tpl();
    }
    else
    {
        $form_data = array(

                    'ministry'            => $this->input->post('ministery'),
                    'directorate'         => $this->input->post('directorate'),
                    'job_province'        => $this->input->post('job_province'),
                    'job_district'        => $this->input->post('job_district'),
                    'first_name'          => $this->input->post('fname'),
                    'last_name'           => $this->input->post('lname')

                     );


       if($this->crud_model->update_recs('ast_emp_property',$form_data)==TRUE)
       {
            $this->session->set_flashdata("msg","<span class='m_success'>".$this->lang->line('global_insert_success')."</span>");
            redirect('/home/success_reg/'.$id.'','refresh');
       }
       else
       {
            $this->session->set_flashdata("msg","<span class='m_error'>".$this->lang->line('global_insert_error')."</span>");
            redirect('home','refresh');
       }
    }

}

} ?&GT;