第一次尝试使用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'])){
答案 0 :(得分:1)
在这种情况下,将其转换为三个不同的模板文件:
应用程序逻辑应该定义显示三种情况中的哪一种。