1

我已经接管了一个 PHP 应用程序,它的代码非常混乱,所以在进行任何重大更改之前,我决定将其重写为 MVC(CodeIgniter)。至于纯html部分我使用$this->load->view(file);技术,但我不知道如何处理这样的事情:

  echo "<tr>";
  echo "<td class=\"border szczegolyTd\">";
  echo "Kamp.: ".$kampania[$kamp]['idProject'];
  echo "<br />";
  echo "<b>".$kampania[$kamp]['name']."</b><br />";
  echo "<div class='szczegolyDiv'><a class=\"pokaz szczegoly\" href=\"?pokaz=".$kampania[$kamp]['idProject']."\">";
  echo "SZCZEGÓŁY";
  echo "</a></div>";
  if (isset($kampania[$kamp]['timestamp'][$iloLeftCustomers-1])) echo "<br />Dane od: <br /><b>".$kampania[$kamp]['timestamp'][$iloLeftCustomers-1]."</b>";
  echo "<br />do: <br /><b>".$kampania[$kamp]['timestamp'][0]."</b>";
    //echo "<br />".$ilOstatnichRozmow;
  polacz();
  $querySpr = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS ile FROM lista WHERE user=".$_SESSION['loginid']." AND kampania=".$kampania[$kamp]['idProject'].""));
  rozlacz();
  if ($querySpr['ile']==0) {
    echo "<div id=\"".$kampania[$kamp]['idProject']."\" class=\"tabDodaj\">DODAJ DO OBSERWOWANYCH</div>";
  }else{echo "<div class='komunikatMasz'>Masz tę kampanię na liście.</div>";}

  echo "</td>";

我是 CodeIgniter(以及一般的 MVC)的初学者,所以我不知道它的所有功能以及选择哪个。也许不可能完全分离这两种技术 - 所以主要使用html和转义php脚本<? ?>或使用phpecho html部分更优雅?

4

3 回答 3

1

您可以随时在模板文件中编写 html 并在其中插入 php 以循环或回显。

echo "<tr>";
echo "<td class=\"border szczegolyTd\">";
echo "Kamp.: ".$kampania[$kamp]['idProject'];
echo "<br />";

可能:

<tr>
<td class="border szczegolyTd">
Kamp.: <?php echo $kampania[$kamp]['idProject']; ?>
<br />

将代码放在这些 PHP 标记中实际上会触发调用。请注意,要保持 html 中的业务代码干净,请确保您只使用 echo、foreach、for 或 if 在其中。

在 CodeIgniter 中,您可以渲染视图文件并插入到“部分”视图中,然后在主模板中使用 TRUE 作为第三个参数来回显它。如果立即输出,这只会缓冲输出。

$data['content'] = $this->load->view('ding/templatefile',$vars,TRUE); 
于 2013-09-11T09:37:51.873 回答
0

如果您真的是新手,请按照本教程进行操作,它很好&& 信息丰富。

是的,这是可能的,最好的用途是短标签+等号<strong><?=$variable?></strong>,它会呼应中的任何内容$variable,无论何时foreach()使用

foreach($elements as $element) {

    $string = "";
    $string .= "new line" . $element->id . "<br>";
    $string .= "line 2" . $element->name;

    echo $string;

}

或者只是随心所欲地回声

foreach($elements as $element) {

    echo "new line" . $element->id . "<br>";
    echo "line 2" . $element->name;

}

但请记住,在进入 foreach 循环之前,请检查您是否有有效的 $variable 可以通过。( empty(), isset(), $variable != FALSE...)

注意:如果您在回显基本文本时需要条件,请使用

<strong><?=(condition) ? 'TRUE' : 'FALSE' ?></strong>

例子

<strong><?=(isset($variable)) ? $variable : '' ?></strong>

于 2013-09-11T09:39:04.917 回答
0

我建议您阅读 MVC 的工作流程,但这应该会为您指明正确的方向。

在控制器中,您实例化数据模型,例如:

$this->load->model("lista");

然后,

$data = $this->lista->getCountList($_SESSION['loginid'], $kampania[$kamp]['idProject']); 

在 lista 模型中,您具有以下功能:

getCountLista($loginId, $projectId)

这部分是:

return mysql_fetch_assoc(mysql_query("SELECT COUNT(*) AS ile FROM lista WHERE user=".$loginId." AND kampania=".$projectId.""));

然后将返回的数据传递给视图

$this->load->view(file, array("listData" => $data));

在视图中:

$listaData[$kamp]['idProject']

它在视图中为视图中传递的数组中的每个项目创建一个变量。

我建议您阅读有关 MVC 的文档。

于 2013-09-11T09:44:40.720 回答