【发布时间】:2014-01-09 09:28:02
【问题描述】:
不是 100% 确定这是可能的,但一位同事要求让他的生活更轻松。
我们有一个已发送的时事通讯存档,并且该站点位于 CodeIgniter 框架中,其中包含用于不同时事通讯的几个控制器。控制器设置如下:
<?php
class Software1 extends CI_Controller {
public function index($software1 = 'home') {
if (!file_exists('../application/views/software1/' . $software1)) {
// Whoops, we don't have a page for that!
show_404();
}
$this->lang->load('common/menu.php');
$this->lang->load('common/links.php');
$this->lang->load('common/footer.php');
$data['title'] = basename($software1, ".html");
$this->load->view('templates/common/header', $data);
$this->load->view('software1/' . $software1, $data);
$this->load->view('templates/common/footer', $data);
}
}
这意味着当前视图是从 software1 文件夹中提取的。电子邮件视图标记为 2013 年 12 月.html、2014 年 1 月.html 等。这很好用,但我的同事问他是否可以将所有 2013 年的电子邮件分别放在 2013 年的文件夹中,将 2014 年的邮件放在 2014 年的文件夹中这样他的生活就更容易理清了。
是否可以让控制器在多个文件夹中查看视图,或者是否有任何其他方法可以实现这一点,以便所有 2013 年都在 software1/2013/Month 2013.html 中,而 2014 年将在软件1/2014/月 2014.html
是的,我知道我可以每年创建单独的控制器,但我试图避免这种情况,如果有一个很好的方法可以使用 so if 和 else 来做到这一点,那就太好了。如果不可能,那没关系,我会告诉他上传到一个文件夹并保持原样,但欢迎提出任何建议。
谢谢
编辑//
当前文件夹结构:
application/
---controllers/
------archive.php
------software1.php
---views/
------Software1/
---------Archive.html
---------January 2013.html
---------Febuary 2013.html
---------March 2013.html
---------April 2013.html
---------May 2013.html
---------June 2013.html
---------July 2013.html
---------August 2013.html
---------September 2013.html
---------October 2013.html
---------November 2013.html
---------December 2013.html
---------January 2014.html
而且显然还必须考虑未来几年,即 2015、16、17 等。
我需要能够轻松地定义路由文件中的 url,目前的 outes 看起来像:
$route['(:any)/(:any)/(:any)/(:any)'] = 'Software1/$1/$2/$3/$4';
$route['(:any)/(:any)/(:any)'] = 'Software1/$1/$2/$3';
$route['(:any)/(:any)'] = 'Software1/$1/$2';
$route['(:any)'] = 'Software1/$1';
$route['default_controller'] = 'Software1/index/home.html';
$route['Archive'] = "ArchiveSoftware1/index/Archive.html";
$route['2013/January'] = "Software1/index/January 2013.html";
$route['2013/March'] = "Software1/index/March 2013.html";
$route['2013/May'] = "Software1/index/May 2013.html";
$route['2013/July'] = "Software1/index/July 2013.html";
$route['2013/September'] = "Software1/index/September 2013.html";
$route['2013/November'] = "Software1/index/November 2013.html";
$route['2014/January'] = "Software1/index/January 2014.html";
看来我的问题很清楚,哈哈希望这会有所帮助:
所以我想要文件夹结构:
application/
---controllers/
------archive.php
------software1.php
---views/
------Software1/
---------Archive.html
------------2013/
---------------January 2013.html
---------------Febuary 2013.html
---------------March 2013.html
---------------April 2013.html
---------------May 2013.html
---------------June 2013.html
---------------July 2013.html
---------------August 2013.html
---------------September 2013.html
---------------October 2013.html
---------------November 2013.html
---------------December 2013.html
------------2014/
---------------January 2014.html
这些视图中的每一个都是一个单独的在线网页,它们唯一的共同点是它们共享页眉和页脚文件。我正在尝试做的事情有 1 个控制器,如果转到 url.net/2014/January 将在 January 2014.html 视图文件中显示信息(正如我所说,如果子文件夹 2013 和 2014 是不存在,即software1文件夹中的所有内容,如果我使用多个控制器,即2013年的1个和2014年的1个等,我可以让它工作。但是我正在尝试拥有它,以便我可以在1个控制器中执行此操作,因此它会查看任何子文件夹,以找到正确的文件以按照路由文件的定义显示。
正如我所说,我不知道这是否真的可以做到,但希望有人能理解我想要实现的目标并给我一些方法:)
【问题讨论】:
-
是的,你可以 例如:$this->load->view('modules/maint/booking/booking');
-
是的,但这只是从 1 个文件夹加载,我需要它来查看多个文件夹,因为所有 2013 年都在一个文件夹中,而所有 2014 年都在另一个类似 software1/' 的文件夹中。 $year, $software1, $data 但可能需要写一些东西来帮助选择 $year 这是我不确定或是否可能做的事情。需要指出的是url如下:software1.websiteurl.net/Year/Month
-
您要使用代码创建视图文件夹吗?
-
该站点已启动并正在运行我不需要使用代码创建文件夹。纯 html 格式的电子邮件文件(因为处理它们的人不知道任何与 Web 相关的代码,他只是将文本添加到我为他创建的模板中)被上传到他想要放入的 software1 文件夹中根据年份放入software1文件夹内的多个文件夹,即他为所有2014年时事通讯上传到software1/2014。我想也许可以使用它,所以它使用最后 4 位数字(即年份),不包括视图文件名中的文件扩展名,不确定这是否可能
-
是的,您可以。在 software1 文件夹中,您可以创建任意数量的文件夹,例如 2013、2014 等。您想在这些文件夹中插入什么内容?
标签: php codeigniter