【问题标题】:Codeigniter - Call to undefined function set_value()Codeigniter - 调用未定义的函数 set_value()
【发布时间】:2016-04-06 12:45:49
【问题描述】:

我是 codeigniter 的新手,现在尝试解决以下问题几个小时。 我尝试在表单中设置值,但是当我设置它时出现以下错误:

遇到 PHP 错误 严重性:错误 消息:调用未定义的函数 set_value() 文件名:modals/register_modal.php 行号:27 回溯:

当我在第 27 行删除 set_value() 时,一切正常。

第 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');

【问题讨论】:

  • 您不必加载表单助手两次。仅将其保留在自动加载中,以便在所有控制器中全局使用它,但从控制器中删除。另外,更改控制器的名称以避免可能的名称冲突,因为 CodeIgniter 已经有 Form 类。毕竟,自动加载 url helper 也是如此。
  • 谢谢你,改变了一切,但仍然是同样的问题。自动加载中是否有任何顺序设置?
  • 不多,因为在autoload.php 中加载的所有类都在控制器之前加载。文档中的基本示例是否适合您?
  • 是的,基本示例工作正常。我以为我可以用我自己的表单和控制器进行 1:1 的操作,但我错了。
  • 也许我收到此错误是因为我的表单处于模态...

标签: codeigniter setvalue


【解决方案1】:

您必须在控制器中加载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');
    }
....    

【讨论】:

  • 这个答案应该被接受。我试过了,效果很好。
【解决方案2】:

在 CodeIgniter4 中你只需要使用 helper 函数来加载库

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

【讨论】:

    【解决方案3】:

    添加帮助 HTML

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

    它对我有用

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2012-02-16
      • 2018-05-05
      • 2017-03-01
      • 1970-01-01
      • 2023-01-02
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多