我在控制器中有这个功能
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>
我得到的输出为
每个函数重复整个html。但我想要的是
我没有重复整个html,而是想在table.ie中显示错误列表,如果orderID和amount为NULL,它应该将表中的错误显示为一行而不是重复显示整个html.Any可能的方式我可以做到吗?我是codeigniter的新手,发现很难做到这样的事情。请帮助
答案 0 :(得分:0)
原因是您在每个错误消息中加载视图,例如$this->displayerror($msg);
,如果验证失败。并且由于正在验证多个项目,因此正在执行多个块,每个都导致HTML视图的重新发送。
更好的方法是仅在执行所有if块之后调用显示错误消息,然后循环查看视图文件中的错误。