Php Symfony pass提交表格至职能部门

Php Symfony pass提交表格至职能部门,php,forms,rest,symfony,doctrine,Php,Forms,Rest,Symfony,Doctrine,我正在创建一个网站,希望所有内容都在一个页面和一个url中“/”。 所有形式均为嵌入模态(主要有三种): 一个是修改用户配置文件 一个是修改个人资料图片 创建一个项目 随着我的进步,我可能会补充更多 登录后,我将重新定向到一个方法,该方法将加载仪表板和表单 现在我想用一个看起来像Crud的独立方法来处理每个表单SUMI, 我该怎么做 是否有一种方法可以在下面的每个方法中传递要处理的表单数据 这是我的控制器: <?php namespace App\Controller; use A

我正在创建一个网站,希望所有内容都在一个页面和一个url中
“/”
。 所有形式均为嵌入模态(主要有三种):

  • 一个是修改用户配置文件
  • 一个是修改个人资料图片
  • 创建一个项目 随着我的进步,我可能会补充更多
登录后,我将重新定向到一个方法,该方法将加载仪表板和表单

现在我想用一个看起来像Crud的独立方法来处理每个表单SUMI, 我该怎么做

是否有一种方法可以在下面的每个方法中传递要处理的表单数据

这是我的控制器:

<?php

namespace App\Controller;

use App\Entity\User;
use App\Form\UpdateImageType;
use App\Form\CreateProjectType;
use App\Form\UpdateUserType;
use App\Repository\UserRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
/**
 * Class DefaultController
 * @package App\Controller
 * @Route ("/", name="main.")
 */
class DefaultController extends AbstractController
{
    /**
     * @return Response
     * @Route ("/", name="home")
     */
    public function index(): Response
    {
        return $this->render('default/index.html.twig', [
        ]);
    }


    /**
     * @param Request $request
     * @param UserInterface $user
     * @return Response
     * @Route ("/profile", name="profile")
     */
    public function profileview(Request $request): Response
    {
        $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
        $userId = $this->getUser()->getId();
        $em = $this->getDoctrine()->getManager();
        $user = $em->getRepository(User::class)->find($userId);
        $userInfoform = $this->createForm(UpdateUserType::class, $user);
        $userImageform = $this->createForm(UpdateImageType::class, $user);
        $createProjectform = $this->createForm(CreateProjectType::class);
        $userId = $this->getUser();
        //dd($userId);
        return $this->render('default/profile.html.twig', [
            'updateUser' => $userInfoform->createView(),
            'updateImage' => $userImageform->createView(),
            'createProject' => $createProjectform->createView(),
        ]);
    }

    /**
     * @Route ("/", name="updateUser")
     * @param Request $request
     */
    public function updateUser(Request $request)
    {
        dd($request);
    }

    /**
     * @Route ("/", name="updateImage")
     */
    public function updateUserImage($request, $form)
    {

    }

    /**
     * @Route ("/", name="newProject")
     */
    public function createProject($request, $form)
    {

    }
}

如果要使用相同的路径(
“/”
),则需要为每个路径指定不同的请求方法,以便路由器知道调用什么。然后确保在每个表单上设置正确的方法

根据这些信息,我建议采用以下方法:

@Route ("/", name="home", methods={"GET"})

@Route ("/", name="updateUser", methods={"PATCH"})

@Route ("/", name="updateImage", methods={"PUT"})

@Route ("/", name="newProject", methods={"POST"})
显示了更改表单方法的不同方法:

$userImageform = $this->createForm(UpdateImageType::class, $user, [
  'method' => 'PUT',
]);
注: 如果表单的方法不是
GET
POST
,而是
PUT
PATCH
DELETE
,Symfony将插入一个名为
\u method
存储此方法的。该表格将以正常的
POST
请求,但Symfony的路由能够检测到_方法 参数,并将其解释为
PUT
PATCH
DELETE
要求必须启用该选项才能执行此操作 工作

--