2016-01-02 5 views
2

im new на codeigniter и попытаться решить следующую проблему в течение нескольких часов. Я стараюсь set_value в форме, но когда я поставил его, я получаю следующее сообщение об ошибке:Codeigniter - вызов функции undefined set_value()

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

Когда я удалить 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; 
       } 
     } 

} 

Я также установить Auto-Load:

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

Вам не нужно дважды набирать хелпер формы. Оставьте его в autoload только для того, чтобы он был глобально во всех контроллерах, но удалите его с контроллера. Кроме того, измените имя контроллера, чтобы избежать возможного столкновения имен, поскольку CodeIgniter уже имеет класс Form. В конце концов, autoload url helper тоже. – Tpojka

+0

Спасибо, изменил все, но все тот же вопрос. Есть ли заказ на автозагрузку? –

+0

Не так много, потому что все классы, загруженные в 'autoload.php', загружаются перед контроллерами. Базовый пример из документации работает или нет для вас? – Tpojka

ответ

4

Вы должны загрузить 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'); 
    } 
....  
Смежные вопросы