CodeIgniter:从模型向查看器发送数组

时间:2011-05-22 22:27:45

标签: arrays codeigniter view model controller

如何将数组从模型发送到视图文件?

背景: 我有一个表格可以放入名称(查看文件)。然后我将此信息传递给我的控制器文件,该文件检查是否有信息添加到表单中。如果没有出现错误消息,则告诉用户必须添加名称。如果已将名称添加到表单中,则控制器会将信息传递给模型,如果数据库中已存在任何名称,则该模型将检查数据库。如果数据库中已存在部分或全部名称,则会将这些名称传递给数组。如果名称未添加到数据库,则模型文件会将它们添加到数据库中。

我想获取已存在于数据库中的名称数组,并为用户输出这些名称。所以这就是我需要数据库中已有名称的数组的原因。

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']。当尝试在视图文件中输出时,会导致错误消息“未定义变量”。

2 个答案:

答案 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。