表达式引擎控制器
Posted
技术标签:
【中文标题】表达式引擎控制器【英文标题】:Expression Engine Controllers 【发布时间】:2011-09-29 03:47:53 【问题描述】:我在 Expression Engine 中构建了我的第一个站点,我想知道如何在 EE 中使用自定义控制器,就像我在 Codeigniter 中一样,或者 EE 是什么等价物?
【问题讨论】:
【参考方案1】:控制器是应用程序的核心,因为它们决定了如何处理 HTTP 请求。
您可能很清楚,CodeIgniter Controller 只是一个类文件,其命名方式可以与 URI 关联。
<?php
class Blog extends CI_Controller
public function index()
echo 'Hello World!';
?>
ExpressionEngine 等效项为 template groups and templates,并在控制面板的模板管理器中进行管理。
由于 EE 的模板组和模板可以任意命名,URL structure 毫不奇怪地模仿了 CodeIgniter 应用程序——毕竟,EE 是基于 CI 构建的。
例如,考虑这个 URI:example.com/index.php/blog
blog.php
的控制器并加载它。
ExpressionEngine 将尝试查找名为 blog
的 模板组 并加载名为 index
的 模板。
继续本示例,URI 的第二段确定调用控制器中的哪个函数(对于 CodeIgniter)或加载哪个模板(对于 ExpressionEngine)。
基于相同的 URI:example.com/index.php/blog/entry
blog.php
的控制器并加载它。
ExpressionEngine 将尝试查找名为 blog
的 模板组 并加载名为 entry
的 模板。
从第三个及以后的 URL 段开始是 CodeIgniter 和 ExpressionEngine 开始采用不同方法的地方。 (对其差异的完整解释超出了此答案的范围)。
虽然 CodeIgniter 和 ExpressionEngine 之间有许多相似之处,但在非常低的级别上,CodeIgniter 可让您构建Web 应用程序,而 ExpressionEngine 可让您构建网站 .
【讨论】:
【参考方案2】:我知道这是旧的,但我只是认为有人在看这个可能会发现实际的响应很有用。 正如其他人所说,ExpressionEngine 中默认忽略控制器的路由。 要更改这一点,您必须编辑第一个 index.php 并注释掉路由默认值:
// $routing[‘directory’] = ‘’;
// $routing[‘controller’] = ‘ee’;
// $routing[‘function’] = ‘index’;
完成后,您可以添加控制器,就像 @rjb 在他的回复中写的那样。
<?php
class Blog extends CI_Controller
public function index()
echo 'Hello World!';
?>
完成此操作后,ExpressionEngine 将首先检查控制器,如果没有找到,它将查找模板。
【讨论】:
【参考方案3】:一般来说,ExpressionEngine 使用模板组和模板来呈现内容。
EE建立在CI之上,但它的功能不像CI,因为它是一个CMS,而不是一个应用程序框架。
【讨论】:
以上是关于表达式引擎控制器的主要内容,如果未能解决你的问题,请参考以下文章