如何将数组从模型发送到视图文件?
背景: 我有一个表格可以放入名称(查看文件)。然后我将此信息传递给我的控制器文件,该文件检查是否有信息添加到表单中。如果没有出现错误消息,则告诉用户必须添加名称。如果已将名称添加到表单中,则控制器会将信息传递给模型,如果数据库中已存在任何名称,则该模型将检查数据库。如果数据库中已存在部分或全部名称,则会将这些名称传递给数组。如果名称未添加到数据库,则模型文件会将它们添加到数据库中。
我想获取已存在于数据库中的名称数组,并为用户输出这些名称。所以这就是我需要数据库中已有名称的数组的原因。
User add:
Mark
Sophie
Dan
Josh
Already in database:
Mark
Dan
Array then contains (should be output to the user):
Mark
Dan
我认为可能的一个解决方案是在模型文件中为函数添加一个return语句。并像这样重新检索数组:
$data['nameArray'] = $this->model_name->add_name();
但这不起作用,因为如果用户错过了向表单添加信息,则会显示else语句,并且不会定义$ data ['nameArray']。当尝试在视图文件中输出时,会导致错误消息“未定义变量”。
答案 0 :(得分:2)
将数组从模型传递到codeigniter中的控制器或视图没有困难。像往常一样传递它们。
你的想法似乎应该有效。如果您想阻止“未定义变量”错误,可以在视图中使用isset()
,如下所示:
<?php if isset($nameArray) echo $nameArray; ?>
如果您的模型返回了名称数组,那么它只会回显。
或者你可以这样做 atno 说并在控制器本身添加一张支票:
$data['nameArray'] = $this->model_name->add_name();
if ( ! $data['nameArray']) $data['nameArray'] = array();
还有其他方法可以做到这一点,取决于你的情况和喜好,最好取决于你的情况。
答案 1 :(得分:1)
在将模型结果添加到数组之前检查结果是否为空,如果为空,则添加$data['nameArray'] = "N/A"
之类的值,如果它不为空$data['nameArray'] = $this->model_name->add_name();
,则在视图中检查$ nameArray是否为数组并继续使用该数组,否则显示字符串N / A.这就是我正在做的事情
如果用户错过了向表单添加信息 ,如果您的用户必须输入此值,则必须强制他们这样做,请检查Form_Validation库对于codeigniter。