根据控制器内的条件更新表来加载视图 - Codeigniter

时间:2014-03-22 15:43:13

标签: php codeigniter

我在控制器中有这个功能

public function transact()
    {
        $merchantid = $this->input->post('merchantid');
        if(!$merchantid)
            {
                $row = array('error' => '<td align="center" width="50%" >204</td><td align="center" width="50%" >Empty merchant ID</td>');              
                $this->load->view('error_view',$row);
            }
        else
            {
                if(!$this->authentication->valid_mid($merchantid))
                    {
                        $row = array('error' => '<td align="center" width="50%" >403</td><td align="center" width="50%" >Authentication Failed</td>');
                        $this->load->view('error_view',$row);
                    }
                else
                    {
                        $orderID = $this->input->post('orderID');
                            if(!$orderID)
                            {
                                $msg='Blank Order ID';
                                $this->displayerror($msg);
                            }
                        $amount = $this->input->post('amount');
                            if(!$amount)
                            {
                                $msg='Blank amount';
                                $this->displayerror($msg);
                            }
                        $email = $this->input->post('email');
                            if(!filter_var($email, FILTER_VALIDATE_EMAIL))
                            {
                                $msg='Invalid Email ID';
                                $this->displayerror($msg);
                            }
                        $mobileNo = $this->input->post('mobileNo');
                            if(!preg_match('/^\d{10}$/',$mobileNo))
                            {
                                $msg='Invalid mobile number';
                                $this->displayerror($msg);
                            }
                    }
            }
    }
    public function displayerror($msg)
    {
        $row = array('error' => '<td align="center" width="50%" >400</td><td align="center" width="50%" >'.$msg.'</td>');
        $this->load->view('error_view',$row);
    }

error_view文件是

<body>

<div id="container">
    <h1>Response</h1>

    <div id="body" style="text-align:center">
        <p><b>Sorry , we are unable to process your request for the following reason/reasons</b></p>
        <div style="margin:50px auto">
            <table style="margin: 0 auto;">

                <tr>
                    <td align="center" colspan="2"></td>
                </tr>
                <tr>
                        <td align="center" width="50%" ><b>Response Code</b></td>
                        <td align="center" width="50%" ><b>Reason</b></td>
                    </tr>


                    <tr>
                        <?php echo $error;?>
                    </tr>   


    </table>


        </div>
    </div>

    <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>

</body>

我得到的输出为

enter image description here

每个函数重复整个html。但我想要的是

enter image description here

我没有重复整个html,而是想在table.ie中显示错误列表,如果orderID和amount为NULL,它应该将表中的错误显示为一行而不是重复显示整个html.Any可能的方式我可以做到吗?我是codeigniter的新手,发现很难做到这样的事情。请帮助

1 个答案:

答案 0 :(得分:0)

原因是您在每个错误消息中加载视图,例如$this->displayerror($msg);,如果验证失败。并且由于正在验证多个项目,因此正在执行多个块,每个都导致HTML视图的重新发送。

更好的方法是仅在执行所有if块之后调用显示错误消息,然后循环查看视图文件中的错误。