Вызов функции-члена helper () для null - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь определить codeigniter и в настоящее время не могу вставить в свою базу данных.Я следил за официальной документацией, успешно читая из БД.Моя полная ошибка:

Обнаружено неперехваченное исключение. Тип: Ошибка

Сообщение: вызов функции-помощника () для функции null

Имя файла: / Library/WebServer/Documents/codeChallenge/system/libraries/Form_validation.php

Номер строки: 147

Обратный след:

Файл: / Library / WebServer / Documents / codeChallenge / application/models/People_model.php Строка: 6 Функция: __construct

Файл: /Library/WebServer/Documents/codeChallenge/application/controllers/People.php Строка: 7 Функция: модель

Файл:/Library/WebServer/Documents/codeChallenge/index.php Строка: 315 Функция: require_once

Как решить эту ошибку?

Контроллер:

class People extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('people_model');
        $this->load->helper('url_helper');
    }

    public function index()
    {
        $data['people'] = $this->people_model->get_people();
        $data['title'] = 'People';

        $this->load->view('templates/header', $data);
        $this->load->view('people/index', $data);
        $this->load->view('templates/footer');
    }

    public function view($id = NULL)
    {
        $data['people_item'] = $this->people_model->get_people($id);

        if (empty($data['people_item']))
        {
            show_404();
        }

        $this->load->view('templates/header', $data);
        $this->load->view('people/view', $data);
        $this->load->view('templates/footer');  
    }


    public function create()
    {
        $this->load->helper('form');
        $this->load->library('form_validation');

        $this->form_validation->set_rules('name', 'Name', 'required');
        $this->form_validation->set_rules('age', 'Age', 'required');
        $this->form_validation->set_rules('city', 'City', 'required');
        $this->form_validation->set_rules('province', 'Province', 'required');
        $this->form_validation->set_rules('country', 'Country', 'required');

        if ($this->form_validation->run() === FALSE)
        {
            $this->load->view('templates/header', $data);
            $this->load->view('people/create');
            $this->load->view('templates/footer');
        }
        else
        {
            $this->people_model->set_people();
            $this->load->view('people/success');
        }
    }
    } 

Модель:

    <?php
    class People_model extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_people($id = FALSE)
    {
        if ($id === FALSE)
        {
            $query = $this->db->get('people');
            return $query->result_array();
        }

        $query = $this->db->get_where('people', array('id' => $id));
        return $query->row_array();
    }

    public function set_people()
    {
        $this->load->helper('url');

        $data = array (
            'name' => $this->input->post('name'),
            'age' => $this->input->post('age'),
            'city' => $this->input->post('city'),
            'province' => $this->input->post('province'),
            'country' => $this->input->post('country')
        );

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

Вид:

    <h2>Create a record</h2>

    <?php echo validation_errors(); ?>

    <?php echo form_open('people/create'); ?>

    <label for="name">Name</label>
    <input type="text" name="name" /><br />

    <label for="age">Age</label>
    <input type="text" name="age" /><br />

    <label for="city">City</label>
    <input type="text" name="city" /><br />

    <label for="province">Province</label>
    <input type="text" name="province" /><br />

    <label for="country">Country</label>
    <input type="text" name="country" /><br />

    <input type="submit" name="submit" value="Create people item" />

    </form>

Маршруты:

    $route['people/create'] = 'people/create';
    $route['people/(:any)'] = 'people/view/$1';
    $route['people'] = 'people';
    $route['(:any)'] = 'pages/view/$1';
    $route['default_controller'] = 'pages/view';

1 Ответ

1 голос
/ 26 сентября 2019

в вашем примере People_model - это модель, но вы расширяете ее в качестве контроллера.

меняете:

class People_model extends CI_Controller 

на

class People_model extends CI_Model 

, анализируяпомогает сообщение об ошибке, в нем говорится (среди прочего)

Файл: /Library/WebServer/Documents/codeChallenge/application/models/People_model.php Строка: 6 Функция: __construct

проверка People_model приводит вас к ошибке при расширении модели в качестве контроллера

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