我原本以为表单对象会填充formmethod和formaction.
问题:有没有办法进行编队?或者找出单击表单中的哪个按钮,从按钮访问它们?
我是否需要重写我的事件处理程序以捕获按钮($(document).on('click', '.myformbtn', function(e))上的点击并用于var queryString= $(this).parent('form').serialize();访问表单.
<form>
<button type="submit"
formmethod="POST"
formaction="/mysave">Save</button>
<button type="submit"
formmethod="GET"
formaction="/mydata">Get new data</button>
</form>
$(document).ready(function()
{
$(document).on('submit', 'form', function(e) {
e.preventDefault();
var formaction = $(this).getFormAction();
var queryString= $(this).serialize();
$.ajax({
type: formmethod,
url: formaction,
data: queryString
});
});
});
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题,答案总是$(this).attr('formaction')不正确,因为表单没有该属性.我希望提供一个如何使用它将让人们的大脑工作的例子.
我创建了一个带有选项卡的页面(使用引导程序),并且所有选项卡都有自己的表单。而且它们都工作得很好。我的问题是当我收到表单错误时,我想打开错误所在的选项卡。
我当前的控制器代码:
public function add(Request $request, EntityManagerInterface $em): Response {
$this->denyAccessUnlessGranted('ROLE_USER');
$entityAdd = new \App\Entity\add();
$form = $this->createForm(\App\Form\Add::class, $entityAdd);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
Run Code Online (Sandbox Code Playgroud)
AddFormType.php 中的函数
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add(...)
->add(...)
->add(...)
->getForm()
;
}
Run Code Online (Sandbox Code Playgroud)
我不是自己创建表单,我使用的是 symfony 表单组件,但我不确定如何修改表单方法以将表单哈希(例如 /add#list-tab1)添加到表单方法中。
{{ form_start(AddForm) }}
{{ form_row(AddForm.name1) }}
{{ form_row(AddForm.name2) }}
{{ form_row(AddForm.save) }}
{{ form_end(AddForm) }}
Run Code Online (Sandbox Code Playgroud) 我们如何在固定装置中使用 UserPasswordHasherInterface 在 Symfony 6 中创建用户?
//App/DataFixtures/AppFixtures.php
namespace App\DataFixtures;
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
class AppFixtures extends Fixture
{
private $manager;
public function load(ObjectManager $manager, UserPasswordHasherInterface $userPasswordHasherInterface): void
{
$this->manager = $manager;
$user = new User();
$user->setEmail("test@example.com");
//$user->setPassword("test_pass");
$user->setPassword(
$userPasswordHasherInterface->hashPassword(
$user, "test_pass"
)
);
$user->setFirstName("Fixture First 1");
$user->setLastName("Fixture Last 1");
$this->manager->persist($user);
$this->manager->flush();
}
}
Run Code Online (Sandbox Code Playgroud)
返回错误
Fatal error: Declaration of App\DataFixtures\AppFixtures::load(Doctrine\Persistence\ObjectManager $manager, Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface $userPasswordH
asherInterface): void must be compatible with Doctrine\Common\DataFixtures\FixtureInterface::load(Doctrine\Persistence\ObjectManager $manager) in C:\wamp64\www\example.com\src\DataFixtures
\AppFixtures.php on line 14 …Run Code Online (Sandbox Code Playgroud)