在 CodeIgniter 中将 PHP 与 HTML 相结合的最佳方式


Best way to combine PHP with HTML in CodeIgniter?

我已经接管了一个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部分更优雅?

您可以随时在模板文件中编写 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); 
如果你

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

的,这是可能的,最好的用途是短标签 + 等号 <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>

我建议您阅读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 的文档。