【问题标题】:how to assign a value to label of a view from controller using codeigniter如何使用codeigniter从控制器为视图的标签分配值
【发布时间】:2016-02-13 13:15:46
【问题描述】:

我使用以下代码在 html 视图部分显示登录表单

<form action="/TestApp/index.php/my_controller/validate" method="POST" method="GET">
  Username: <input name="name" type="text"><br />
  Password: <input name="word" type="password"><br />
  <label name = "error"></label><br />
  <input type="submit" value="Login">
</form>

在控制器内部我验证用户名和密码。以下代码行帮助我将文本框值输入控制器。

$uName = $_POST['uname'];
$pWord = $_POST['pword'];

我需要从控制器分配/设置字符串值来标记错误。

我该怎么做?请帮帮我。

控制器

class My_controller extends CI_Controller {

public function login()
{
    $this->load->view('login_view');
}

    public function validate()
    {
        $this->load->model('login');



        if((isset($_POST['name'])) && (isset($_POST['word'])) && !empty($_POST['name']) && !empty($_POST['word']))
        {
            $uName = $_POST['name'];
            $pWord = $_POST['word'];

            if($this->model_users->checkUser($uName) == 1) {
                if($this->model_users->checkPassword($uName) == $pWord) {
                    echo 'Loggedin!';
                    $this->session->set_userdata('login_state', TRUE);
                } else {
//                        Incorrect password;
                    redirect( '/' );
                    $error = "Incorrect password!";
                }
            } else {
//                    Username does not exist;
                redirect( '/' );
                $error = "Username does not exist!";
            }
        } else {
//                Username or Password field is empty;
            redirect( '/' );
            $error = "Username or Password field is empty!";
        }
    }

}

【问题讨论】:

标签: php html codeigniter


【解决方案1】:

动作应该是

action="<?php echo base_url() ?>my_controller/validate"

autoload.php 中也加载url helper

验证方法

$uName = $_POST['name']; # not uname
$pWord = $_POST['word']; # not uname

传递查看日期

在控制器中

$data['error'] = "My Message here";

可见

if (!empty($error)) {
    ?>
    <label name ="error"></label>
    <?php
}
else{

}

【讨论】:

  • 我的操作很好。我需要知道如何从控制器为标签赋值
  • @user3002114 立即查看
【解决方案2】:

带有验证的控制器部分代码

<?php

class Form extends CI_Controller {

	function index()
	{
		$this->load->helper(array('form', 'url'));

		$this->load->library('form_validation');

		$this->form_validation->set_rules('username', 'name', 'required');
		$this->form_validation->set_rules('password', 'word', 'required');
		
		if ($this->form_validation->run() == FALSE)
		{
			$this->load->view('myform');
		}
		else
		{
			$this->load->view('formsuccess');
		}
	}
}
?>

【讨论】:

  • 没有。我在问如何在控制器的视图中为标签&lt;label name = "error"&gt;&lt;/label&gt; 赋值
【解决方案3】:

试试这个

在视图中

 <?php echo form_open('my_controller/validate', ['method'=>'post']) ?>

在控制器内部

$uName = $this->input->post['name'];
$pWord = $this->input->post['word'];

【讨论】:

    【解决方案4】:

    纠正这个,

    在控制器中

    $uName = $this->input->post('name');
    $pWord = $this->input->post('word');
    
    if($uName == "" || $pWord == ""){// change the conditions if required.
        $error = 1;
    } else {
        $error = 0;
    }
    $data['error'] = $error;
    $this->load->view("view_name",$data);
    

    在视图中

    if($error) { 
        echo "<label>Error has occurred</label>";// change error if required.
    }
    

    如果您尝试重定向,请使用flashdata()。 在控制器中。

    $this->session->set_flashdata("error","error message here");
    

    在视图中

    if($this->session->flashdata("error"){
        // echo label here
    }
    

    【讨论】:

    • 我无法使用$this-&gt;load-&gt;view("view_name",$data);,因为我已经加载了视图。这只是验证登录的功能。需要在提交按钮单击时为该标签设置值
    • 编辑了问题并增加了控制器的功能。我将我需要的错误消息分配到$error 变量中。我的验证码工作正常。我需要的是,将$error 的值设置为视图的标签。
    • 你想使用redirect()??
    • 我不知道redirect() 做了什么。能解决这个问题就好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2012-07-27
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多