提交表单时如何从 URL 中删除表单名称?
How to remove form name from URL when form is submitted?
我有一个简单的 Symfony3 表单,但正如预期的那样,它会在获取表单时生成包含表单名称的丑陋 url。像这样:
...php?party_form%5Bplace%5D=Milan&party_form%5Bdate%5D=01%2F01%2F2017&party_form%5Bsave%5D=&party_form%5B_token%5D=KMN745JpTUyZZQSRnP5kd6YHQnQhAlU9eHtMwZ-zi7g
我想从 url 中删除 party_form
。
根据 this 问题,我做了以下更改:
class PartyForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('GET')
->add( $builder
->create('place', TextType::class)
->addModelTransformer(new CallbackTransformer(
function ($placesAsArray) {
// transform the array to a string
if ($placesAsArray) {
return implode(', ', array_values($placesAsArray));
}
},
function ($placesAsString) {
// transform the string back to an array
$rawPlaceArray = explode(', ', $placesAsString);
// If the place doesn't have city, province and country don't search for it.
// validation constraints on place will throw an error.
if (count($rawPlaceArray) == 3) {
$keys = array('city', 'province', 'country');
return array_combine($keys, $rawPlaceArray);
}
}
))
)
->add('date', DateType::class,
array(
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
)
)
->add('save', SubmitType::class,
array(
'label' => 'Find List',
)
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Frontend\Event',
'required' => false
));
}
// This function was to be ovveridden
public function getBlockPrefix()
{
return null;
}
但是现在提交的表单字段为空!我在这里错过了什么?
试试:
// This function was to be ovveridden
public function getBlockPrefix()
{
return '';
}
我有一个简单的 Symfony3 表单,但正如预期的那样,它会在获取表单时生成包含表单名称的丑陋 url。像这样:
...php?party_form%5Bplace%5D=Milan&party_form%5Bdate%5D=01%2F01%2F2017&party_form%5Bsave%5D=&party_form%5B_token%5D=KMN745JpTUyZZQSRnP5kd6YHQnQhAlU9eHtMwZ-zi7g
我想从 url 中删除 party_form
。
根据 this 问题,我做了以下更改:
class PartyForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('GET')
->add( $builder
->create('place', TextType::class)
->addModelTransformer(new CallbackTransformer(
function ($placesAsArray) {
// transform the array to a string
if ($placesAsArray) {
return implode(', ', array_values($placesAsArray));
}
},
function ($placesAsString) {
// transform the string back to an array
$rawPlaceArray = explode(', ', $placesAsString);
// If the place doesn't have city, province and country don't search for it.
// validation constraints on place will throw an error.
if (count($rawPlaceArray) == 3) {
$keys = array('city', 'province', 'country');
return array_combine($keys, $rawPlaceArray);
}
}
))
)
->add('date', DateType::class,
array(
'widget' => 'single_text',
'format' => 'dd/MM/yyyy',
)
)
->add('save', SubmitType::class,
array(
'label' => 'Find List',
)
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Frontend\Event',
'required' => false
));
}
// This function was to be ovveridden
public function getBlockPrefix()
{
return null;
}
但是现在提交的表单字段为空!我在这里错过了什么?
试试:
// This function was to be ovveridden
public function getBlockPrefix()
{
return '';
}