【发布时间】:2020-01-06 04:09:48
【问题描述】:
我在 ApiPlatform 中的自定义操作有问题。在任何情况下我都无法提交表单。我不知道我做错了什么。
我正在使用 Postman (https://www.getpostman.com/) 来测试 api。我尝试了所有方法:application/x-www-form-urlencoded、form-data、raw (application/json)。我还更改了 GET 方法的路由和必要设置,并尝试在查询字符串中发送参数“状态”。
ApiPlatform 标准发布操作正在运行,所以我认为这不包括服务器配置。
API 平台配置:
api_platform:
formats:
json: { mime_types: [ "application/json" ] }
jsonld: { mime_types: [ "application/ld+json" ] }
form: { mime_types: [ "application/x-www-form-urlencoded" ] }
mapping:
paths: ['%kernel.project_dir%/src/Entity']
Nelmio cors 配置:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
allow_headers: ['Content-Type', 'Authorization']
expose_headers: ['Link']
max_age: 3600
paths:
'^/': null
ApiResource 实体配置:
* @ApiResource(
* collectionOperations={
* "get",
* "post"={
* "method"="POST",
* "path"="/assets",
* "controller"=UploadAssetAction::class,
* "defaults"={"_api_receive"=false},
* }
* }
* )
我的自定义操作动作:
namespace App\Controller;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\Request;
class UploadAssetAction
{
/** @var FormFactoryInterface */
private $formFactory;
public function __construct(FormFactoryInterface $formFactory)
{
$this->formFactory = $formFactory;
}
public function __invoke(Request $request)
{
/**
* State parameter is in request stack.
*/
var_dump($request);
$form = $this->formFactory->createBuilder()
->add('state', TextType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted()) {
die('Form submitted');
}
die('No form submission');
}
}
我也尝试过自定义表单类。
结果始终是整个请求的 var_dump 和最后的“无表单提交”。
【问题讨论】:
标签: php forms symfony4 api-platform.com submission