0

对于我的大多数项目,我制作了一个管理界面,每个项目都有相同的设计。header、footer、topbar、leftmenu、css等的设计总是一样的。每次都创建视图很可惜;所以我在想:也许有一种很好的方法可以将管理界面放入我的 MVC 库中,因为它被每个项目重用?

但是目前,在每个视图中,我都得到了如下代码:

<?php $this->_include('/includes/doctype.php'); ?>
<head>
    <?php $this->_include('/includes/head.php'); ?>
    <title>Some title</title>
</head>
<body>
<?php $this->_include('/includes/topbar.php'); ?>
<div id="page">
<?php $this->_include('/includes/header.php'); ?>
<?php $this->_include('/includes/leftmenu.php'); ?>
<div id="content" role="main">

    <h1>Some title</h1>

    <p>Blah blah blah.</p>

</div><!-- /#content -->
<?php $this->_include('/includes/footer.php'); ?>
</div><!-- /#page -->
</body>
</html>

从界面结构中提取自定义内容并以某种方式将该结构放入我的库中以使其可重用是一个好主意吗?之后如何自定义标题和实际菜单?

4

1 回答 1

0

我一直这样做。我有一个自定义页眉和页脚文件,在每个页面的开头和结尾调用。

<?PHP
Require("includes/header.php");

...


Require("includes/footer.php");
?>

标头提供数据库句柄、日期时间字符串并处理登录、权限、页面浏览记录等。

页脚提供标准的 HTML 页面,但包含一些系统化的变量。它还从驱动数据库动态生成菜单,然后关闭数据库连接。

这样,当我编写代码时,我就不会在 HTML 中混淆,并且很容易找到任何错误。

我喜欢类似于以下的变量:

$display_scripts - adds extra data in the head section.
$display_onload_scripts - adds onload scripts to body section.
$display_style_sheets - option to include link to additional stylesheets
$display_above_menu - will appear above the menubar.  NOT recommended.
$display_below_menu - will appear immediately below the menubar.
$display_one_column - page contents when only one column is to be used
$display_left_column - page contents when two columns used.  Left pane.
$display_right_column - page contents when two columns used.  Right pane.
$display_footer - appears in footer division.

然后我的主要代码只需要生成适当的变量。从根本上说,你需要做的是检查你产生的好年龄的来源,然后用变量替换你想要改变的东西。

这是我使用的文件的示意图版本(伪代码),让您了解我是如何做到的。

// Code here generates the menu from database
// Code here genereates popup alert messages from other users

 //permanent links to external style sheets go here.
 //You can also select skins here.

<?PHP
echo $display_style_sheets;
echo "<title>".$display_page_title."</title>";
?>

<script type="text/javascript" src="JAVASCRIPT GOES HERE.js"></script>

</head>

<body  <?PHP echo $display_onload_scripts;?> >



<div id="page_area" > 
        <div id="banner">
    </div>

    <?php
    echo $display_above_menu;
    if(!$hide_menu){echo $display_menu;}  //Insert the menu variable here.
    echo $display_below_menu;
    ?>

<div id="content_area">
<div id="inner_content">

<?PHP
if($display_number_of_columns==1)
    {
    echo "<div id='onecolumn'>".$display_one_column."</div>"; //I only use this one
    }
if($display_number_of_columns==2)
    {
    echo "<div id='leftcolumn'>".$display_left_column."</div>";  //these are left for legacy support from before I got better at CSS.
    echo "<div id='rightcolumn'>".$display_right_column."</div>";
    }
echo "<div id='footer'>".$display_footer."</div>";  //just in case - I hardly use it.
echo $display_pop_box;   //for user alert messages to other users
?>

</div>
</div>
</div>

<div id="logbox"> Automatic Logout statement</div> //this is called by JS to activate timeouts.

</body>
</html>

<?PHP
$mysqlidb->close();
?>

抱歉,代码太多了。布局允许轻松调整,并且如果事情没有按预期进行,则可以轻松找到有问题的变量。有更优雅的解决方案,但这对我来说效果很好,而且速度非常快。

于 2013-06-14T09:28:12.777 回答