Codeigniter & HMVC - 回调不起作用

标签 codeigniter callback hmvc

我几乎浏览了此处和其他位置提供的许多链接和解决方案,但我只是无法解决我面临的回调问题。我在 HMVC 中使用 Codeigniter,代码如下。

以下代码来自 My_Form_validation.php :

class MY_Form_validation extends CI_Form_validation {

    function run($module = '', $group = ''){
        (is_object($module)) AND $this->CI = &$module;
            return parent::run($group);
    }
}

下面是回调函数:
public function _unique_email($str) {

    // Check if user already exists
    // Process only for current user
    $id = $this->uri->segment(4);
    $this->db->where('email', $this->input->post('email'));
    !$id || $this->db->where('id !=', $id);
    $user = $this->mdl_admin_users->get();

    if (count($user)) {
        $this->form_validation->set_message('_unique_email', 'User already exists. Please check %s.');
        return FALSE;
    }

    return TRUE;
}

和功能:
public function user_edit($id = NULL) {

    // Fetch a user or set a new one
    if ($id) {
        $data['user'] = $this->mdl_admin_users->get($id);
        count($data['user']) || $data['errors'][] = 'User could not be found';
    }
    else {
        $data['user'] = $this->mdl_admin_users->get_new();
    }

    // setup the form
    $rules = $this->mdl_admin_users->rules_admin;
    $id || $rules['password'] = '|required';
    $this->form_validation->set_rules($rules);

    //process the form
    if ($this->form_validation->run($this) == TRUE) {
        $data = $this->mdl_admin_users->array_from_post(array('firstname', 'lastname', 'email', 'password'));
        $data['password'] = $this->mdl_admin_users->hash($data['password']);
        $this->mdl_admin_users->save($data, $id);
        redirect('admin/user');
    }

    // Load the view
    $data['title'] = 'Edit Users';
    $data['module'] = 'admin';
    $data['header_file'] = 'header_admin';
    $data['nav_file'] = 'nav_admin';
    $data['view_file'] = 'edit_users';
    $data['footer_file'] = 'footer_admin';
    echo Modules::run('template/base_template', $data);

}

如果有人能指出我解决问题的正确方向,那将是一个很大的帮助。提前致谢

纳文

最佳答案

根据wiredesignz,

在 MX 中使用表单验证时,您需要扩展 CI_Form_validation 类,如下所示,

/** application/libraries/MY_Form_validation **/ 
class MY_Form_validation extends CI_Form_validation 
{
    public $CI;
}

在将当前 Controller 作为 $CI 变量分配给 form_validation 库之前。这将使您的回调方法正常运行。
class Xyz extends MX_Controller 
{
    function __construct()
    {
        parent::__construct();

        $this->load->library('form_validation');
        $this->form_validation->CI =& $this;
    }
}

这将消除与 HMVC 相关的回调问题,而无需对您的代码进行任何更改。

关于Codeigniter & HMVC - 回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27923836/

相关文章:

php - 使用 codeigniter 的 payfast 支付网关集成

django - 适用于应用程序的 Drupal、CodeIgniter、Yii 或 Django

php - PHP 变量函数在 PHP4 中工作吗?

android - 如何检测NFC标签移除事件?

php - 与 PHP 中的 MVC 相比,HMVC 的优缺点

php - MySQL SELECT 所有列,但用某些默认值替换 null 或空列

codeigniter - 如何从 codeigniter 中的每个 Controller 访问功能

python - Django 形成 : get the value of a forms. CharField 作为日期

php - Codeigniter 3.0.6 hmvc 不适用于单个模块

mysql - ci hmvc 查询在模型中返回空结果集