【发布时间】:2013-01-24 06:46:02
【问题描述】:
我有一个关于显示函数内容的问题,这个函数显示了一个while循环。
这是我模型中的一个函数:
function get_results($id)
{
$stmt = "select * where ... "
$stmt = $this->BEAR->Database->query($stmt);
$result = '';
while($row = mysqli_fetch_array($stmt))
{
$result .= '<div>';
$result .= $row['name'];
$result .= '</div>';
}
$this->BEAR->Template->setData('loop', $result, FALSE);
}
这是我的控制器:
$BEAR->Webprofile->get_results(Template->getData('id'));
这是我的观点:
<?php echo $this->getData('loop');?>
这将毫无问题地在我的视图中显示循环。但我希望在我的模型中没有任何 HTMl,是否有这样做(因为这会导致我的模型中出现大量 HTML)。也许我可以在模型中设置数据,然后在我的视图中获取数据。
我尝试在模型函数中单独设置 while 循环,如下所示:
while($row = mysqli_fetch_array($stmt))
{
$this->BEAR->Template->setData('name', $row['name']);
$this->BEAR->Template->setData('name', $row['age']);
}
然后调用Controller中的函数并调用每个setData,但这只是显示第一个结果而不是完整的while循环内容。
因此,我希望在我的视图中显示我的 while 循环的所有内容(使用 HTML),但希望我的函数只是获取和设置数据。这可以做到吗?任何想法或指导将不胜感激。
【问题讨论】:
-
我不确定我是否理解,您基本上是想从您的 PHP 中获取实时 html 输出?如果是这样,AJAX 适合您。
-
不,基本上是从我的模型中获取数据并在 while 循环中设置每一行。然后在我的模型中调用该函数并分别显示我模型中的设置行。
-
如果您从 2 个不同的控制器调用 $model->get_results 会发生什么,然后一年后您想更改其中一个控制器的输出格式...您不能因为您是在模型中创建输出。您的模型应该只返回数据集。您的控制器应该调用 model->get_results 并将结果数据集传递给视图(模板)。在上面的示例中,您将在模型中组合视图
-
您使用的是哪个框架?代码点火器?
-
@Matt 我明白这一点,因此我问这个问题;)我想知道一种方法来做你刚才所说的事情。 Ally我没有使用框架,本质上是我自己创建的MVC框架:)