Codeigniter MVC Пример кода - PullRequest
       0

Codeigniter MVC Пример кода

0 голосов
/ 12 декабря 2010

Привет! Я следую руководству по началу работы для Codeigniterr, указанному на http://www.ibm.com/developerworks/web/library/wa-codeigniter/

Я выполнил инструкцию по созданию вида спереди и добавил контроллер для обработки отправки формы.В идеале, когда я отправляю форму, он должен загрузить класс модели и выполнить функцию, чтобы поместить детали в базу данных, но вместо этого он просто печатает код модели в браузере.

**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. Сделать разрешение 777 для всего www

. НоКод модели, кажется, только что напечатан ... ПОЖАЛУЙСТА, ПОМОГИТЕ

Ответы [ 2 ]

1 голос
/ 02 октября 2012

Всего несколько незначительных моментов, которые могут вам помочь:

  1. В вашем контроллере укажите метод индекса на метод, который вы хотите вызвать на этой странице.Например:

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

    Это поможет сохранить чистоту и ясность, особенно если кто-то еще придет, чтобы позже поработать с вами над кодом.Я выбрал welcome, потому что это имя вашего класса контроллеров, и все будет просто.

  2. В вашей модели это:

    class mcontacts extends Model{
    

    Должно быть:

    class Mcontacts extends Model{
    

    Используйте названия этих классов с большой буквы!Это может доставить вам неприятности, которые вы описываете.

    Подробнее об этом см. Здесь: http://codeigniter.com/user_guide/general/models.html

  3. Не используйте регистр верблюдов в именах классов или методов.Это не то, что приведет к сбою вашего кода, но это общепринятая практика.Для получения дополнительной информации см. Руководство по стилю PHP для Codeigniter: http://codeigniter.com/user_guide/general/styleguide.html

0 голосов
/ 13 декабря 2010

С форматированием трудно увидеть, как оно есть, но есть ли дополнительная фигурная скобка после метода конструктора (mcontacts ()) в модели?Это вызовет проблемы!Кроме того, хотя код выглядит в целом нормально, вероятно, есть лучшие способы использования инфраструктуры, особенно если вы делаете что-то более сложное, чем то, что вы показали.Например, автозагрузка, проверка формы и т. Д. Могу ли я предложить вам прочитать руководство пользователя?Это очень тщательно и ясно, и должно помочь вам много.http://codeigniter.com/user_guide/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...