PHP到没有模板管理器的html模板

时间:2014-04-25 07:14:57

标签: php html templates

我又来了......我一直在看一些教程,现在我已经在PHP编程方面做得很好......

我想知道的是:使用模板管理器,例如smarty,你可以用代码制作1个php页面并将其重定向到view html文件......在php上就像这样......

$a = new Trabalhos();
$id = new Users();
$sm->assign("id", $a->select());

if (isset($_GET['del'])) {
    $a->setId($_GET['del']);
    $a->delete();
}

if (isset($_POST['id'])
        and isset ($_POST['trolha'])
        and isset($_POST['padeiro'])
        and isset($_POST['arquitecto'])
        and isset($_POST['engenheiro'])
        and isset($_POST['medico'])
        and ! isset($_GET['edit'])) {
    $a->setId($_POST['id']);
    $a->setTrolha($_POST['trolha']);
    $a->setPadeiro($_POST['padeiro']);
    $a->setArquitecto($_POST['arquitecto']);
    $a->setEngenheiro($_POST['engenheiro']);
    $a->setMedico($_POST['medico']);    
    $a->insert();
}

$lista = $a->select();
$sm->assign("lista", $lista);
$sm->display("trabalhos.html");

然后我在trabalhos.html中创建了视图页面并将其放入:

<form method="post">
            | id <select name ="id">
                {foreach from=$id item=d}
                <option value ="{$d.id}">{$d.id}</option>
                {/foreach}
            </select>
            | Trolha <input name ="trolha" type="text" />
            | Padeiro <input name ="padeiro" type="text" />
            | Arquitecto <input name ="arquitecto" type="text" />
            | Engenheiro <input name ="engenheiro" type="text" />
            | Medico <input name ="medico" type="text" />
            <input type="submit" value="Guardar"/>
        </form><br>
        <table border="1">
            <tr>
                <td>ID</td>
                <td>Trolha</td>
                <td>Padeiro</td>
                <td>Arquitecto</td>
                <td>Engenheiro</td>
                <td>Medico</td>
                <td>Acoes</td>
            </tr>
            {foreach from = $lista item = row}
            <tr>
                <td>{$row.id}</td>
                <td>{$row.trolha}</td>
                <td>{$row.padeiro}</td>
                <td>{$row.arquitecto}</td>
                <td>{$row.engenheiro}</td>
                <td>{$row.medico}</td>
                <td>Edit | <a href="?del={$row.id}">Delete</td>
            </tr>
            {/foreach}
        </table>

好的,直到我得到它,并在教程的帮助下使其工作并提供我的变量

现在我真正想知道的是如果没有外部模板管理器的帮助我怎么能这样做,每个人都会说这更容易,但是,我想学习php,而不是运行pre-制作脚本,如果你知道我的意思

现在我不相信外部代码......相信它我需要理解它

所以,如果他们让它变得聪明起来,我必须让它自己工作吗?

是否需要使用php中的其他语言才能执行此操作?像java或类似的东西?

或者我可以使用php和html编码吗?

如果有可能只使用php和html编码可以有人告诉我例如我将如何使用foreach php函数工作?我如何向html传输变量信息?

真的很抱歉这个巨大的帖子,但我没有看到任何类似我在这里和谷歌的问题我只是看到人们和论坛谈论模板经理,这不是我正在寻找;)

非常感谢你上一篇文章得到肯定答案的答案;)

2 个答案:

答案 0 :(得分:2)

尝试编写自己的模板引擎是一项艰巨的任务。但你可以用普通的PHP来完成它,而不需要其他语言。

基本上,您的模板引擎需要2件才能工作:

  1. 模板。您的trabalhos.html文件是模板。它是一个HTML文件,其中包含对您的模板引擎具有特定含义的特殊占位符(如{$d.id})。
  2. 变量。如果您想对模板执行一些有用的操作,则必须提供要使用的变量(这是您使用此类$a->setId($_POST['id']);之类的指令执行的操作。
  3. 现在您需要做的是编写一些能够解析模板文件的代码(识别您定义的占位符)并使用它们。如果你只需要用变量的值替换占位符,这很容易做到,但是一旦你开始实现像循环这样复杂的功能就会变得棘手。

    除此之外,您还需要编写一些代码,使您能够将值绑定到变量以及存储这些变量的对象。

    这是一项艰巨的工作,但如果您的目标是学习PHP,那么这是一个非常好的方法。祝你好运!

答案 1 :(得分:0)

您可以使用文件写入功能。

$file = fopen("trabalhos.html","w");
fwrite($file,$lista);
fclose($file);