验证错误消息不会出现在View中?

时间:2014-11-20 02:27:41

标签: php codeigniter

当用户的输入无效时,我的$msg不会出现在视图中。没有错误显示,只是错误消息没有出现。下面是我的控制器和视图。

登录控制器

public function index($msg = null){
    $data['msg'] = $msg;
    $this->load->view('login_view', $data);
}

public function process(){
    $this->load->model('login_model');

    $result = $this->login_model->validate();

    if(!$result){
        $msg = '<font color=red>Invalid username and/or password.</font><br />';
        $this->index();
    }else{
        // if validated to member area
        redirect('home');
    }
}

我的login_view

<?php if(! is_null($msg)) echo $msg;?>

$this->index有效但$msg始终为null,我想知道原因。

2 个答案:

答案 0 :(得分:0)

public function index($msg = null){

    $data['msg'] = $msg;
    $this->load->view('login_view', $data);
}

public function process(){
    $this->load->model('login_model');

    $result = $this->login_model->validate();

    if(!$result){
        $msg = '<font color=red>Invalid username and/or password.</font><br />';
        $this->index($msg);
    }else{
        // if validated to member area
        redirect('home');
    }
}

你需要传递变量,因为它不在其他函数的范围内 - 我将以另一种方式创建另一个答案,以另一种方式作为示例。 - 如果可以,尝试将HTML保留在控制器之外。

答案 1 :(得分:0)

protected $viewData = array(); 

public function __construct(){
    parent::__construct(); 
}

public function index(){
    $this->load->view('login_view', $this->viewData);
}

public function process(){
    $this->load->model('login_model');

    if(!$result = $this->login_model->validate()){
        $this->viewData['msg'] = array(
            'msg' => 'Put your message Here',
            'class' => 'error'
        );
        return $this->index();
    }
    redirect('home');
}
  

////////////////////////////////////////////

     

查看文件

<?php 

    if(isset($msg['msg'], $msg['class'])){ 

        echo '<span class="'.$msg['class'].'" >' .  $msg['msg'] . '</span>';

    }

?>