slabphp/controllers

SlabPHP 控制器库

v0.1.11 2018-03-12 00:00 UTC

This package is auto-updated.

Last update: 2024-09-09 14:03:50 UTC


README

该库包含了 SlabPHP 应用程序使用的三个主要基础 SlabPHP 控制器。

是的,我们知道您可能不同意在这种架构中滥用受保护的方法。请参阅 SlabPHP 的主要文档以获取有关 SlabPHP、架构关注点或其他任何信息的更多信息。

安装

包含此库

composer require slabphp/controllers

控制器的一般架构

一般来说,该库中的控制器将有三个调用序列。第一个是输入序列,第二个是操作序列,第三个是输出。函数将排队到适当的序列中,然后它们一次性依次被调用。这允许子类向序列中添加更多方法。为了实现这一点,您会看到很多受保护的方法。如果这冒犯了您,我们表示歉意,但 SlabPHP 可能不适合您。

输入

输入序列通常用于确定在操作阶段将使用的值。

操作

这通常是您根据在输入阶段确定的输入查询数据的地方。

输出

这通常是您将操作阶段查询到的数据处理成可以添加到 $this->data 成员中的字段的地方。

响应

控制器的响应应该是一个实现了 \Slab\Components\Output\ControllerResponseInterface 接口的类。然后 SlabPHP 框架将根据控制器指定的显示解析器的逻辑来处理它。

使用

通常,您应该从 \Slab\Controllers\Page 扩展您的控制器类以创建网页,从 \Slab\Controllers\Feed 扩展以创建 JSON 或 XML 源,从 \Slab\Controllers\POSTBack 扩展以创建您将 POST 数据到其上并随后重定向到另一个控制器的控制器。

\Slab\Controllers\Page

如果您正在创建 HTML 网页或任何将使用 SlabPHP 模板显示渲染器的内容,请从这里扩展您的控制器。

例如,

<?php
namespace My\Site\Controllers\Homepage;

class Homepage extends \Slab\Controllers\Page
{
    protected $title = "Homepage!";
    
    protected $description = "Page Description!";
}

通过创建此类,SlabPHP 将自动尝试使用 ~\src\views\shell.php 作为主模板,使用 ~\src\views\pages\homepage.php 作为内容区域的子模板名称来渲染模板。

页面控制器接受以下来自路由的参数。

  • pageTitle - 指定页面的标题
  • pageDescription - 指定页面的描述
  • contentType - 指定内容类型头,默认为 text/html;charset=utf-8
  • displayResolver - 指定要使用的 slabphp 显示解析器类,默认为 \Slab\Display\Resolvers\Template
  • template - 指定要使用的主要外壳模板
  • subTemplate - 指定要插入到外壳中的子模板文件

您可以使用页面类作为您的控制器,完全从路由参数创建页面。

\Slab\Controllers\Feed

如果您正在创建 XML 或 JSON 源,请从这里扩展您的控制器。此控制器将读取 feedType 参数,如果它是 "json" 或 "xml",它将正确地编码输出。

JSON 源还将响应 ?callback= 查询参数,并以 JSONP 格式格式化输出。

\Slab\Controllers\POSTBack

如果您正在创建一个接收数据并需要随后重定向到另一个控制器的控制器,请从这里扩展。执行您的逻辑并设置 $this->redirectRoute 和 $this->redirectParameters 以自动查询路由器以获取正确的 URL 并重定向到它。

POSTBack 控制器将根据类中的常量为您管理会话闪存数据。

无论什么

SlabPHP主要基于接口进行操作。如果你想要,可以采用接口并创建自己的控制器,我们不是警察。