我正在学习编写更好的代码,并且不要将PHP代码与HTML / CSS混合使用,因为这对我和以后会阅读我的代码的人都更好。但是,我偶然发现了这样一种情况:我的用户具有不同的角色,并且每个角色都有自己的color / class / style / html。我最终将HTML代码放入PHP逻辑中,反之亦然。有解决这个问题的好方法吗?
PHP:
<tr>
HTML:
if ($user_role == 'administrator') {
$user_color == '#ff0000'; <-- CSS Style in my PHP
$user_class == 'admin-class'; <-- CSS Class in my PHP
}
$users = [
'username' => 'John',
'user_color' => '#ff0000' <-- CSS Style in my PHP
]
或者如果我不想在PHP中使用HTML或CSS,那么我最终将PHP放入HTML。
HTML
<a class="<?= $user_class ?> style="color: <? $user_color ?>">Administrator</a>
所以无论哪种方式,我最终都将两者混合在一起。这只是一个示例,我需要根据某些逻辑或条件来调整HTML。
答案 0 :(得分:0)
您应该使用模板引擎(例如Twig)
默认情况下,这还会从XSS等保护您的应用,避免转义变量。
这样,您可以像这样将PHP和HTML分开:
PHP
$template = $twig->load('index.html');
echo $template->render(array(
'user_color' => $user_color,
'user' => $user
));
HTML
<a style="color: {{ $user_color }}">{{$user->username}}</a>
答案 1 :(得分:0)
有几种选择:
<a class="<?= $userRole; "></a>
更少:
@colorRed = #f00;
.administrator {
color: @colorRed;
}
<link href="styles.php">
在那里
.administrator {
color: <?= $colorRed; ?>
}
由于您开始学习结构,因此请考虑使用MVC原理:PHP代码(也称为controller
)不必负责表示(也称为view
)。所有用户界面的内容都必须在前端,而不是后端