如何在PHP中实现模板逻辑

时间:2010-10-24 18:05:30

标签: php templates logic

第一次尝试使用PHP模板时,我对将业务与表示逻辑分离有点困惑。我已选择Dwoo作为我的模板引擎,您将在下面的示例中看到,但我的问题与Dwoo无关。 我看到我正在做的不是一个好的逻辑,它会让设计师感到困惑,它并没有真正区分PHP / HTML。如果有人有时间解释我的话,我想不出任何其他方式这样做。

干杯。

PHP代码

$trans = translation('LABEL');

// Load Template Engine
$dwoo = new Dwoo(); $dwooTpl = new Dwoo_Template_File('tpl/label.tpl.html'); $dwooData = new Dwoo_Data(); $dwooData->assign('title','Page Title');
if(!isset($_SESSION['logged'])){ $dwooData->assign('logged',0); $dwoo->output($dwooTpl,$dwooData); }else{ $userID = $_SESSION['userID']; if (!isset($_POST['add'])){ $sql = "SELECT labelName FROM label WHERE userID = $userID"; $rs = mysql_query($sql) or die('Can\'t get label'. mysql_error()); if(mysql_num_rows($rs)){ while ($row = mysql_fetch_object($rs)){ $labels[] = $row->labelName; } $dwooData->assign('labels',$labels); }

    $dwooData->assign('logged',1);
    $dwooData->assign('addLabel',0);
    $dwoo->output($dwooTpl,$dwooData);

}else{

    $labelName = mysql_real_escape_string($_POST['labelName']);
    $labelName = trim($labelName);
        if(strlen($labelName) < 1)
        {
            $dwooData->assign('ERR1','Label Name is not valid.
                  You must enter at least 1 letter as Label name.');
        }else{
            $sql = "SELECT labelName
                    FROM label
                    WHERE userID = '$userID'
                    AND labelName = '$labelName'";
            $rs = mysql_query($sql) or die('Can\'t get label '. mysql_error());
            if(mysql_num_rows($rs)){
               $dwooData->assign('ERR2',"Label '<strong>$labelName</strong>' already exists.");

            }else{
                $sql = "INSERT INTO label
                        VALUES('','$userID','$labelName')";
                mysql_query($sql) or die('Can\'t insert Label '. mysql_error());
                $dwooData->assign('INFO','Label added Succesfully.');
             }
        }


$dwooData->assign('logged',1);
$dwooData->assign('addLabel',1);
$dwoo->output($dwooTpl,$dwooData);

}

}

模板代码

if(!isset($_SESSION['logged'])){

1 个答案:

答案 0 :(得分:1)

在这种情况下,将其转换为三个不同的模板文件:

  • 单个$ ERRMSG模板
  • 一个“你必须登录..”页面
  • 和表格

应用程序逻辑应该定义显示三种情况中的哪一种。