【问题标题】:Error Call to a member function library() on null在 null 上调用成员函数 library() 时出错
【发布时间】:2021-07-01 17:35:46
【问题描述】:

我尝试了很多其他帖子的解决方案,但似乎没有任何效果

这部分是我遇到麻烦的地方,但我不知道如何让它工作

        $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>

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    Codeigniter 3.x 没有名为“form”的内置库。所以除非你已经创建了这样一个库,否则调用它会返回一个错误。

    另一方面,有一个辅助函数“form”,你可以用它来调用

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

    请关注文档,这些文档很有帮助:

    Form Validation

    Form Helper

    在评论后编辑:另一方面,这可能是由拼写错误引起的:

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

    肯定是public function __construct()

    【讨论】:

    • 在 null 上调用成员函数 helper() 现在这是我得到的错误
    • public function __construct() { parent::__construct();// 你错过了这一行。我修复了它,但仍然给我这个错误
    猜你喜欢
    • 2020-09-02
    • 2022-01-02
    • 2022-07-26
    • 2018-01-14
    • 2017-08-09
    • 2020-01-19
    • 2017-09-14
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多