表达式引擎控制器

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

CodeIgniter 会尝试找到一个名为blog.php控制器并加载它。 ExpressionEngine 将尝试查找名为 blog模板组 并加载名为 index模板

继续本示例,URI 的第二段确定调用控制器中的哪个函数(对于 CodeIgniter)或加载哪个模板(对于 ExpressionEngine)。

基于相同的 URI:example.com/index.php/blog/entry

CodeIgniter 将尝试查找名为 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,而不是一个应用程序框架。

【讨论】:

以上是关于表达式引擎控制器的主要内容,如果未能解决你的问题,请参考以下文章

[正则]前瞻

Aviator 表达式引擎 轻量级的java语言实现的表达式求值引擎

[自制模板引擎] 为模板引擎增加解析表达式功能

规则表达式引擎框架

规则表达式引擎框架

构建自己的PHP框架(Twig模板引擎)