domingollanes/strong-parameters-bundle

Rails中的强参数在Symfony中的实现

v0.2 2018-10-06 18:08 UTC

This package is auto-updated.

Last update: 2024-09-07 07:30:30 UTC


README

此Bundle允许在Symfony控制器中模拟Rails的强参数。

您可以对参数进行简单的允许或拒绝。

此Bundle非常适合API,但也可以用于任何应用程序。

警告:这是一个早期版本。

仅在Symfony 3.4上进行了测试。

安装

步骤1:下载Bundle

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此Bundle的最新稳定版本

$ composer require domingollanes/strong-parameters-bundle

此命令需要您全局安装Composer,如Composer文档中的安装章节所述。

步骤2:启用Bundle

然后,将Bundle添加到项目app/AppKernel.php文件中注册的Bundle列表中,以启用该Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new DomingoLlanes\StrongParametersBundle\StrongParametersBundle(),
        );

        // ...
    }

    // ...
}

配置

此Bundle接受两个配置,您可以在config.yml中覆盖它们,但它们有默认值。

// config.yml

strong_parameters:
  resource: '%kernel.project_dir%/app/Resources/parameters/'
  exceptions: false

配置允许的参数

您可以轻松配置允许的参数的命名空间,例如

// app/Resources/parameters/user.yml

allow:
  test:
  test2:
    test1:
      t3:
      t2:
deny:
  - test4

这个yaml接受在控制器动作中的这些参数

array:2 [
  "test" => "testValue"
  "test2" => array:1 [
    "test1" => array:2 [
      "t2" => "t2Value",
      "t3" => "t3Value"
    ]
  ]
]

使用方法

// src/AppBundle/Controller/DefaultController.php

// ...

    public function testAction(Request $request, ParametersService $parametersService)
    {
        // ...

        // For $_GET parameters
        $params = $parametersService->permitParameters('user', $request->query->all());

        // For $_POST parameters
        $params = $parametersService->permitParameters('user', $request->request->all());

        // For Content/json parameters
        $params = $parametersService->permitParameters('user', json_decode($request->getContent(), true));
        // ...
    }
    
// ...