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