Ошибка вызова библиотеки функций-членов () при нулевом значении

avatar
Bruno Vega
1 июля 2021 в 17:35
98
1
0

я перепробовал множество решений из других постов, но ничего не работает

в этой части у меня возникли проблемы, но я не знаю, как заставить ее работать

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

Контроллер

    <?php

namespace App\Controllers;

class Home extends BaseController
{
  public function __contruct()
{
    parent::__construct();// you have missed this line.
    
}
    public function index()
    {
        helper (['form']);
        return view('inicio');
    }
    public function descarga()
    {
        return view('filesnames');
    }
    public function conta()
    {
        $this->load->library('form_validation');
        $this->load->library('form');
        return view('contact/index');
    }
    public function pregu()
    {
        return view('preguntas');
    }
    public function dud(){
        return view('duda');
    }
    public function contact()
    {
    
        $autoload['libraries'] = array('session','Email','form','form_validation');
        $autoload['helper']=array('form', 'url');

    //Set form validation
    $this->form_validation->set_rules('name', 'Name', 'trim|required|min_length[3]|max_length[20]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|min_length[0]|max_length[60]');
    $this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[5]|max_length[200]');

    //Run form validation
    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('contacto');
    } else {

        //Get the form data
        $name = $this->input->post('name');
        $from_email = $this->input->post('email');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        //Web master email
        $to_email = 'admin@domain.com'; //Webmaster email, who receive mails

        //Mail settings
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.gmail.com';
        $config['smtp_port'] = '465';
        $config['smtp_user'] = 'mail@domain.com'; // Your email address
        $config['smtp_pass'] = 'mailpassword'; // Your email account password
        $config['mailtype'] = 'html'; // or 'text'
        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE; //No quotes required
        $config['newline'] = "\r\n"; //Double quotes required

        $this->email->initialize($config);                        

        //Send mail with data
        $this->email->from($from_email, $name);
        $this->email->to($to_email);
        $this->email->subject($subject);
        $this->email->message($message);
        
        if ($this->email->send())
        {
            $this->session->set_flashdata('msg','<div class="alert alert-success">Mail sent!</div>');

            redirect('contact');
        } else {
            $this->session->set_flashdata('msg','<div class="alert alert-danger">Problem in sending</div>');
            $this->load->view('contacto');
        }

    }
  }
}

просмотр

    <body class="ecommerce">

  <div class="header">
    <div class="container">
      <a class="site-logo" href="<?= site_url('/'); ?>"><img src="assets/images/home/logou2.png" class="logosi" alt=""></a>

      <a href="javascript:void(0);" class="mobi-toggler"><i class="fa fa-bars"></i></a>
    </div>

    <!-- BEGIN NAVIGATION -->
    <div class="header-navigation">
      <ul>
        <li><a href="<?= site_url('/'); ?>">Inicio</a></li>
        <li><a href="<?php base_url()?>Asistentev16.apk" download="Asistentev16.apk">Descargar</a></li> 
        <li><a href="<?= site_url('/cont'); ?>">Contactanos</a></li>   
        <li><a href="<?= site_url('/faq'); ?>">Preguntas Frecuentes</a></li>         
        </ul>
    </div>
  </div><br>
<div class="container">
<h2>Contact</h2>
<div class="row">
  <?php $validation =  \Config\Services::validation(); ?>
    <div class="col-lg-6">
        <?php echo $_SESSION['msg']; ?>
        <form action="<?php echo base_url('/submit-form') ?>" method="post">
        <div class="form-group">Nombre
            <?php echo form_input(array('name' => 'name', 'id' => 'name', 'size' => '50', 'value' => set_value('name'))) ?>
            <?php if ($validation->getError('name')): ?>
               <div class="invalid-feedback">
                  <?= $validation->getError('name') ?>
               </div>                                
            <?php endif; ?>
        </div>
        <div class="form-group">Email
            <?php echo form_input(array('email' => 'email', 'id' => 'email', 'size' => '50', 'value' => set_value('email'))) ?>
            <?php if ($validation->getError('email')): ?>
               <div class="invalid-feedback">
                  <?= $validation->getError('email') ?>
               </div>                                
            <?php endif; ?>
        </div>
        <div class="form-group">Asunto
            <?php echo form_input(array('subject' => 'subject', 'id' => 'subject', 'size' => '50', 'value' => set_value('subject'))) ?>
            <?php if ($validation->getError('subject')): ?>
               <div class="invalid-feedback">
                  <?= $validation->getError('subject') ?>
               </div>                                
            <?php endif; ?>
        </div>
        <div class="form-group">Mensaje
            <?php echo form_input(array('message' => 'message', 'id' => 'message', 'value' => set_value('message'))) ?>
            <?php if ($validation->getError('message')): ?>
               <div class="invalid-feedback">
                  <?= $validation->getError('message') ?>
               </div>                                
            <?php endif; ?>
        </div>
        <button name="submit" type="submit" class="btn btn-primary" />Send</button>
        </form>
    </div>
</div>
</body>
Источник

Ответы (1)

avatar
Vickel
1 июля 2021 в 20:17
0

Codeigniter 3.x не имеет встроенной библиотеки с именем "form". Поэтому, если вы не создали такую ​​библиотеку, вызов ее вернет ошибку.

с другой стороны есть вспомогательная функция "форма", которую вы можете вызвать с помощью

$this->load->helper('form');

пожалуйста, следуйте документам, которые очень помогают:

Проверка формы

Помощник по формам

edit, после комментария: с другой стороны это может быть вызвано опечаткой:

public function __contruct()
{
    parent::__construct();// you have missed this line.
    
}

которое определенно должно быть public function __construct()

Bruno Vega
1 июля 2021 в 20:34
0

Вызов вспомогательной функции-члена () для нуля, теперь это ошибка, которую я получаю

Vickel
1 июля 2021 в 20:41
0

ты это проверял? coderhelper.com/questions/58121230/…

Bruno Vega
2 июля 2021 в 16:33
0

public function __construct() { parent::__construct();// вы пропустили эту строку. } я исправил это, и все равно выдает эту ошибку