【问题标题】:codeigniter - pass messages to viewcodeigniter - 传递消息以查看
【发布时间】:2013-08-21 20:06:08
【问题描述】:

我是 Codeigniter 的新手。我有一个控制器 users,它加载了一个 login 视图。

class user extends CI_Controller {
    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form'));
    }
    public function login()
    {
        $this->load->model('user_images');
        $data = $this->load->model('login');
        $this->load->view('login', $data);
    }
}

在login 模型中,我处理所有验证和处理。如果出现验证错误或类似情况,我会返回$data['msg'] = 'some error message';,我会将这些数据通过$data = $this->load->model('login'); 传递给$this->load->view('login', $data);,并在视图中回显$msg。但是,在提交表单过程时,如果我输入正确的凭据,我会登录,但是如果我输入一些错误的凭据,验证错误不会传递到视图。我正在将该项目从非框架环境中移出,因此我确信验证规则可以正常工作。等等。我只是不确定为什么视图上没有解析消息。

【问题讨论】:

  • 如果您使用的是 codeigniter,那么请使用 code igniter 表单验证 - 它极大地简化了错误消息传递。对于验证失败的表单 - 它可以插入以前的表单值。

标签: php forms codeigniter post


【解决方案1】:

看来你搞错了

 $data = $this->load->model('login');

load->model() 加载 login_model 并通过

使其方法可用

$this->login->youMethodHere().

如果出现验证错误或类似问题,我返回 $data['msg'] = 'some error message';我通过 $data = $this->load->model('login'); 传递这些数据到 $this->load->view('login', $data);

当您从方法/函数返回某些内容时,您不会返回变量。您返回变量的值。

您应该将您的方法添加到 login_model(也许这应该是 user_model...)并返回 ex。模型中的数组或 mysqli 结果集。根据模型返回的内容,您应该设置数据。

$this->load->model('user_model');
$login_succes = $this->user_model->login($username, $password);
if( $login_success ) 
{
   $data['msg'] = 'hurrah you did it
   ...

【讨论】:

  • 所以我无法从类中访问错误变量,因为在我的构造函数中我处理我想要处理的所有内容,否则我必须将构造函数材料移动到控制器中?我真的不想重写这个...ideone.com/Ji4oVd...以前而不是data['msg']返回我会做$this->error并得到错误。我可以这样做吗?
  • 当然,如果我们在讨论表单验证,您可以使用 validation_errors() 或者您可以返回一个包含错误消息的对象/数组作为成员,或者您可以抛出异常并处理它.您链接的代码有很多不符合 mvc 配置文件的内容。就像从模型重定向等。你应该阅读 MVC 模式和/或 CodeIgniters。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
相关资源
最近更新 更多