Codeigniter MVC示例代码

时间:2010-12-12 20:59:59

标签: codeigniter

您好 我正在按照http://www.ibm.com/developerworks/web/library/wa-codeigniter/

提供的Codeigniterr入门指南

我已按照说明创建了前视图并添加了控制器来处理表单提交。理想情况下,当我提交表单时,它应该加载模型类并执行函数以将详细信息放在数据库上,而只是在浏览器中打印出模型的代码。

**Code of view (Welcome.php)**
----------------
<?php

class Welcome extends Controller {

 function Welcome()
 {
  parent::Controller(); 
 }

 function index()
 {

    $this->load->helper('form');
    $data['title'] = "Welcome to our Site";
    $data['headline'] = "Welcome!";
    $data['include'] = 'home';
    $this->load->vars($data);
    $this->load->view('template');

 }
 function contactus(){
  $this->load->helper('url');
  $this->load->model('mcontacts','',TRUE);
  $this->mcontacts->addContact();
  redirect('welcome/thankyou','refresh');
}


function thankyou(){
  $data['title'] = "Thank You!";
  $data['headline'] = "Thanks!";
  $data['include'] = 'thanks';
  $this->load->vars($data);
  $this->load->view('template');
}



}

/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */

**Code of Model** 
--------------
class mcontacts extends Model{

  function mcontacts(){
    parent::Model();
  }
}

function addContact(){
  $now = date("Y-m-d H:i:s");
  $data = array( 
    'name' => $this->input->xss_clean($this->input->post('name')),
    'email' => $this->input->xss_clean($this->input->post('email')),
    'notes' => $this->input->xss_clean($this->input->post('notes')),
    'ipaddress' => $this->input->ip_address(),
    'stamp' => $now
  );

  $this->db->insert('contacts', $data);
 }

**OUTPUT after clicking submit** 
-----------------------------
class mcontacts extends Model{ function mcontacts(){ parent::Model(); } } function addContact(){ $now = date("Y-m-d H:i:s"); $data = array( 'name' => $this->input->xss_clean($this->input->post('name')), 'email' => $this->input->xss_clean($this->input->post('email')), 'notes' => $this->input->xss_clean($this->input->post('notes')), 'ipaddress' => $this->input->ip_address(), 'stamp' => $now ); $this->db->insert('contacts', $data); } 

我尝试过做这些事情 1.使所有PHP代码可执行 2.将文件的所有权更改为www-data 3.为整个www

制作许可777

但是,模型代码似乎只是打印出来......请帮助

2 个答案:

答案 0 :(得分:1)

可能对您有所帮助的一些小问题:

  1. 在您的控制器中,将索引方法指向您要在该页面上调用的方法。例如:

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

    这将有助于保持清洁和清晰,特别是如果其他人随后与您一起处理代码。我选择了welcome,因为这是控制器类的名称,这将使事情变得简单。

  2. 在你的模型中,这个:

    class mcontacts extends Model{
    

    应该是:

    class Mcontacts extends Model{
    

    将这些类名称大写!这可能会给你带来麻烦。

    有关详情,请参阅此处:http://codeigniter.com/user_guide/general/models.html

  3. 不要在您的班级或方法名称中使用驼峰案例。这不会导致您的代码失败,但这是普遍接受的做法。有关详细信息,请参阅Codeigniter的PHP样式指南:http://codeigniter.com/user_guide/general/styleguide.html

答案 1 :(得分:0)

很难看到格式化,但在模型中的构造函数方法(mcontacts())之后是否有额外的大括号?这会导致问题!此外,虽然代码看起来一般都没问题,但是可能有更好的方法来使用框架,特别是如果你做的事情比你所展示的更复杂。例如,自动加载,表单验证等。我可以建议您阅读用户指南吗?这是非常彻底和清晰的,应该帮助你很多。 http://codeigniter.com/user_guide/index.html