我正在开发一个Web应用程序。 我有这段代码:
<?php
if($_SESSION['add'] == 1)
echo '<input type="button" name="add" id="add" value="Add" onclick="add()" >';
if($_SESSION['edit'] == 1)
echo '<input type="button" name="edit" id="edit" value="Edit" onclick="edit()">';
?>
基本上,当用户登录时,我设置会话变量,指示该用户是否有权进行更改并添加记录。因此,当他们到达主页时,我使用此代码来决定是否显示我的添加和编辑按钮。
此代码是否违反逻辑/表示分离规则?如果是这样,我怎样才能实现分离?
我没有使用任何网络框架。
答案 0 :(得分:10)
虽然View中的条件非常好,但您的View不应该尝试从任何来源获取任何数据。这不是它的作用,它应该只适用于您的Controller(或Presenter,取决于您的应用程序架构)提供的数据。您的视图不应该知道为什么和时背后的逻辑,以便在edit
和add
模式之间切换。在订购时,它必须知道如何。在您的情况下,Controller应检查$_SESSION
并决定显示哪种模式,添加或编辑您的视图,并将该决定传递给您的视图(即action_mode
= edit|add
),以便执行哑术
PS:我建议养成一个习惯,始终将代码块(甚至是单行)放在{
,}
括号中。