Codeigniter - вызов неопределенной функции set_value()

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

Произошла ошибка PHP Серьезность: Сообщение об ошибке: Вызов неопределенной функции set_value() Имя файла: modals/register_modal.php Номер строки: 27 Обратный след:

Когда я удаляю set_value() в строке 27, все работает нормально.

Строка номер 27 — это строка set_value():

<div class="row"> 
 <div class="form-group">
  <label class="control-label sr-only">Vorname:</label>
   <div class="col-md-8 col-md-offset-2 col-xs-10 col-xs-offset-1">
   <input type="text" class="form-control" name="firstname" placeholder="Vorname" value="<?php echo set_value('firstname'); ?>" size="50" />
   <i class="fa form-control-feedback" aria-hidden="true"></i>
   </div>
  </div>
</div>

Это мой контроллер:

class Form extends CI_Controller {

        public function index()
        {
                $this->load->helper('form');

                $this->load->library('form_validation');

                $this->form_validation->set_rules('firstname', 'Vorname', 'required|callback_username_check');
                $this->form_validation->set_rules('surename', 'Nachname', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required');
                $this->form_validation->set_rules('password', 'Passwort', 'required');

                if ($this->form_validation->run() == FALSE)
                {
                        $this->load->view('modals/register_modal');
                }
                else
                {
                        $this->load->view('modals/login_modal');
                }
        }

        public function username_check($str)
        {
                if ($str == 'test')
                {
                        $this->form_validation->set_message('username_check', 'The {field} field can not be the word "test"');
                        return FALSE;
                }
                else
                {
                        return TRUE;
                }
        }

}

Я также установил автозагрузку:

$autoload['helper'] = array('form');

person Hadi Reda    schedule 02.01.2016    source источник
comment
Вам не нужно загружать помощник формы дважды. Оставьте его в автозагрузке только для того, чтобы он был глобально на всех контроллерах, но удалите из контроллера. Кроме того, измените имя контроллера, чтобы избежать возможного конфликта имен, поскольку в CodeIgniter уже есть класс Form. В конце концов, помощник автозагрузки тоже.   -  person Tpojka    schedule 02.01.2016
comment
Спасибо, все поменял, но проблема та же. Есть ли порядок установки в автозагрузке?   -  person Hadi Reda    schedule 02.01.2016
comment
Не так много, потому что все классы, загруженные в autoload.php, загружаются перед контроллерами. Базовый пример из документации работает или нет?   -  person Tpojka    schedule 02.01.2016
comment
Да, базовый образец работает нормально. Я думал, что смогу взять его 1:1 с моей собственной формой и контроллером, но я ошибся.   -  person Hadi Reda    schedule 02.01.2016
comment
Может быть, я получаю эту ошибку, потому что моя форма находится в модальном...   -  person Hadi Reda    schedule 02.01.2016
comment
Попробуйте сузить свой код, чтобы сделать вывод, когда именно вы получаете ошибку. Загружается ли модальное окно полностью сразу или оно загружается через AJAX позже? Разместите свои файлы на pastebin.com и свяжите их, чтобы мы могли видеть всю историю, а не фрагменты кода.   -  person Tpojka    schedule 02.01.2016
comment
Я посмотрел здесь codeigniter.com/user_guide/helpers/form_helper.html#set_value и говорит сделать <?php echo set_value('firstname', 'something'); ?>   -  person Mr. ED    schedule 03.01.2016


Ответы (3)


Вы должны загрузить library('form_validation') в свой контроллер. Эта работа для меня:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller{

    public function __construct(){
        parent::__construct();
        $this -> load -> library('form_validation');
    }
....    
person sama roeintan    schedule 29.10.2016
comment
Этот ответ следует принять. Я попробовал, и это сработало. - person fsevenm; 05.12.2019

В CodeIgniter4 вам нужно только использовать функцию helper для загрузки библиотеки.

<?php namespace App\Controllers;
use App\Models\UserModel;
class Users extends BaseController {
public function index()
{
    helper (['form']);   
    ......
person Hans Ratzinger    schedule 13.10.2020

Добавить вспомогательный HTML

protected $helpers = ['form','url','html'];

Это сработало для меня

person Varsha Patil    schedule 22.05.2021