aurmil/slim3-skeleton

Slim Framework 3 应用程序骨架

v3.0.2 2018-02-23 10:11 UTC

This package is auto-updated.

Last update: 2024-09-16 03:58:12 UTC


README

包含什么?

安装

要求:PHP 7 和 Composer

运行以下命令,将 [your-project-name] 替换为你想要创建的文件夹名称。

composer create-project aurmil/slim3-skeleton [your-project-name]

此骨架包含一个用于 Apache 的 .htaccess 文件,但 Slim 支持其他 Web 服务器

  • 可选:创建一个指向 public 文件的虚拟主机
  • 当使用 Apache 时,确保项目路径(或父文件夹)具有 AllowOverride All 以使 Slim URL 重写 生效
  • 确保 var 文件夹可由 Web 服务器写入

配置

配置文件存储在 config 文件夹中。每个主题/包有一个 YAML 文件,以便更好地阅读/管理。其他特定于包的配置文件也可以存储在那里(然后在应用程序代码中处理)。您还可以将所需的内容添加到 app.yaml 文件中,因为使用新的配置值在应用程序代码中取决于您。

某些配置值可能从一种环境更改为另一种环境。当前环境名称从 ENVIRONMENT 环境变量中读取(默认 = development)。特定于环境的配置文件覆盖全局配置的值。只需将现有 YAML 文件复制粘贴到以有效环境名称命名的文件夹中。然后编辑此文件,删除除了您想要为此环境更改的值之外的所有内容。在 development-exampleproduction-example 文件夹中有示例。

配置通过以下方式在应用程序中可用

  • src/bootstrap.php 中的 $config 变量
  • 容器 settings 条目:$container->settings 通常,并在扩展 App\Controllers\Controller 的控制器中为 $this->settings
  • 在 Twig 模板中的 config 变量:{{ config.my_custom_setting_key }},但它只包含 appsecurity 配置文件

控制器

控制器可以继承自 App\Controllers\Controller 类。

它提供了一个 render() 方法,并可通过 $this->my_service_entry_name 自动访问 Slim 容器条目。

会话

session.yaml 配置文件中,您可以选择启用或禁用会话使用。

如果您想使用 Flash 消息或 CSRF 保护,则需要会话。

CSRF

如果启用了会话,则每个请求都会生成 CSRF 令牌。

security.yaml 配置文件中,您可以选择启用令牌持久性:为每个用户生成一个令牌,而不是为每个请求生成。这简化了 Ajax 的使用,但如果您不使用 HTTPS,则会使应用程序容易受到重放攻击。

如果 CSRF 检查失败,则请求将有一个 csrf_status 属性设置为 false。您可以在路由/控制器中检查此属性/值。

if (false === $request->getAttribute('csrf_status')) {
    // CSRF check failed
}

在 Twig 模板中,您可以使用以下方法添加 CSRF 隐藏字段

{{ csrf() }}

如果您想自定义某些内容,也可以访问CSRF令牌值。

{{ csrf_token.keys.name }}
{{ csrf_token.keys.value }}
{{ csrf_token.name }}
{{ csrf_token.value }}

闪存消息

如果启用了会话,则可用闪存消息。

在路由/控制器中添加消息

$this->flash->addMessage('my_key', 'my_value');

在Twig模板中获取消息

{% set my_var = flash('my_key') %}

获取所有消息

{% set my_var = flash() %}

电子邮件

swiftmailer.yaml配置文件中,您可以选择启用SwiftMailer,然后使用容器中的mailer条目作为代码中的Swift_Mailer对象。

通过在monolog.yaml配置文件中配置SwiftMailerHandler(+ swiftmailer.yaml文件)或NativeMailerHandler,可以在发生错误时启用或禁用Monolog发送电子邮件。

HTML元标签

您在app.yaml配置文件中的metas下添加的每个key: value对都将作为元标签输出到HTML头部。

标题

页面标题是一个特殊案例。显然,titletitle_separator条目不会像其他条目一样输出为元标签。

页面标题的组成如下

  • 模板子项可以定义的metaTitle块的content
{% block metaTitle %}my custom page title{% endblock %}
  • 如果app.metas.title配置条目不为空
    • 如果app.metas.title_separator配置条目不为空,则添加分隔符
    • 添加app.metas.title

代码质量工具

运行以下命令以检查您的代码

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件