Codeigniter 和大局

发布于 2024-10-15 02:57:08 字数 562 浏览 2 评论 0 原文

最近开始使用 Codeigniter 并完成了大部分教程。我想将一个小型 PHP/MySQL 网站转换为完全在 CI 框架上运行。该代码已经有四年了,用 PHP4 编写,而且很混乱。我不介意重写所有内容。

我遇到的问题是找到这个问题的“正确”解决方案。我希望代码尽可能保持 OOP/PHP5,并且尽可能干净。该网站有 5 个 6 个主要组件,排列在 DIV 中。两个堆栈形成一个中心列,一个左侧,一个右侧,一个标题/菜单,一个动态填充的 Fancybox。当前的index.php只是调用header.php,然后继续

等等。

我见过的 codeigniter 示例在每个模板文件上使用 $this->load->view('header') 和页脚来设置结构。这似乎是处理标头、加载 CSS 文件等的一种冗余且混乱的方式。

加载这些控制器和关联视图的正确方法是什么?如果您愿意的话,可以使用“包装器”的 codeigniter 版本。

Have recently started using Codeigniter and have gotten through most of the tutorials. I'd like to convert a smallish PHP/MySQL website to run entirely on the CI framework. The code is four years old, written in PHP4, and is a mess. I don't mind rewriting all of it.

The problem I'm having is find the 'right' solution to this problem. I'd like to keep the code as OOP/PHP5 as possible, and as clean as possible as well. The website has five six main components arranged in to DIVs. Two stack to form a center column, one left, one right, one header/menu, and one dynamically filled Fancybox. The current index.php simply calls header.php, then goes on to <div class="class1"><include ('box1.php')</div> and so on.

The codeigniter examples I've seen use $this->load->view('header') and footer on each template file to get the structure set up. This seems to be a redundant and messy way to handle the header, loading of the CSS file, etc.

What is the proper way to get these controllers and associated views loaded? The codeigniter version of a 'wrapper', if you will.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

万劫不复 2024-10-22 02:57:08

获取模板库,我个人更喜欢与 Colin Williams菲尔·斯特金

本质上,你做了这样的事情:(假设“layout”是你的HTML模板)

layout.php(视图)

<html>
<head>
  <title><?=$title;?></title>
  <?=$metaData;?>
</head>
<body>
  <div id="left">
    <?=$leftContent;?>
  </div>
  <div id="main">
    <?=$main;?>
  </div>
</body>
</html>

然后在你的控制器中:

site.php(控制器)

class Site extends Controller {

  function __construct()
  {
      $this->load->library('template');
      $this->template->set_layout('layout');
  }

  function index()
  {
      $this->template->write_region('title', 'This is my title');
      $data['somedata'] = 'foo'
      $this->template->write_region('main', 'My content', $data);
      $this->template->render();
  }
}

这会将您的数据输出到模板中,而无需每次都加载视图等。

我的语法有点不对,因此请检查库特定文档以获取正确的代码,但在我看来,模板库是正确的方法。

get a template library, i personally prefer working with either of Colin Williams or Phil Sturgeons.

in essence, you do something like this: (assuming "layout" is your HTML template)

layout.php (view)

<html>
<head>
  <title><?=$title;?></title>
  <?=$metaData;?>
</head>
<body>
  <div id="left">
    <?=$leftContent;?>
  </div>
  <div id="main">
    <?=$main;?>
  </div>
</body>
</html>

then in your controller:

site.php (controller)

class Site extends Controller {

  function __construct()
  {
      $this->load->library('template');
      $this->template->set_layout('layout');
  }

  function index()
  {
      $this->template->write_region('title', 'This is my title');
      $data['somedata'] = 'foo'
      $this->template->write_region('main', 'My content', $data);
      $this->template->render();
  }
}

This will output your data in to your template, without needing to have load views each time etc.

My syntax is a little off, so check library specific docs for the correct code, but template libraries are the way to go imo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文