我写了地址,按Enter,出现带有坐标的标记。我按照说明进行操作,转到下一页,URL参数随坐标值一起传输。 如果我按回该按钮,则必须为坐标的隐藏输入将失去必要的值,但地址保持不变。如果我再次按照说明进行操作,则在下一页上,坐标不再传输到URL,最后一切都崩溃了。 在单击后退按钮之前,我不会丢失坐标的值。 可以吗 (/加入-第一页), (/新-第二页)
***/join.html.twig***
<div class="form-group col-md-1 add-address-wrapper">
<div class="move-from-above"> </div>
<button type="button" class="btn btn-default btn-sm btn-set-location" aria-label="Set location"
data-toggle="modal"
data-target="#filterLocationModal"
data-address-field="#{{form.address.vars.id}}"
data-latitude-field="#{{form.latitude.vars.id}}"
data-longitude-field="#{{form.longitude.vars.id}}">
<img src="{{ asset('Resources/public/images/icons/map-point.png') }}" alt="">
</button>
</div>
<div class="form-group col-md-4 padding-left-none padding-right-none coordinates">
<label>
{% trans %}Destination address{% endtrans %}
</label>
{{form_widget(form.latitude)}}
{{form_widget(form.longitude)}}
{{form_widget(form.address, {'attr': {'readonly': 'readonly', 'class': 'form-control'}})}}
{{form_errors(form.address)}}
</div>
***/TripRequestController.php***
/**
* Creates a new tripRequest entity.
*
* @Route("/new", name="request_new")
* @Method({"GET", "POST"})
*/
public function newAction(Request $request)
{
if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
throw $this->createAccessDeniedException();
}
$tripRequest = $this->container->get('autotracker.trip_request')->getNewRequestStub($this->getUser());
if ($filterDate = $request->query->get('trip_date')) {
$tripRequest->setTripDate(new DateTime($filterDate, new DateTimeZone('UTC')));
}
if ($filterAddress = $request->query->get('dest_addr')) {
$tripRequest->getDestinationWaypoints()[0]->setAddress($filterAddress);
}
if ($filterLatitude = $request->query->get('dest_lat')) {
$tripRequest->getDestinationWaypoints()[0]->setLatitude($filterLatitude);
}
if ($filterLongitude = $request->query->get('dest_long')) {
$tripRequest->getDestinationWaypoints()[0]->setLongitude($filterLongitude);
}
$form = $this->createForm(
'Autotracker\RequestBundle\Form\TripRequestType',
$tripRequest,
['view_timezone' => $this->getUser()->getTimezone()]
);
$form->add('create', SubmitType::class, [
'label' => 'Create request',
])
->add('create_and_search', SubmitType::class, [
'label' => 'Create and initiate search',
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($tripRequest);
$em->flush();
if ($form->get('create_and_search')->isClicked()) {
return $this->redirectToRoute('request_edit', [
'id' => $tripRequest->getId(),
'_fragment' => 'driversearch',
]);
} else {
return $this->redirectToRoute('request_index');
}
}
$mapService = $this->container->get('autotracker.service.geo');
return $this->render('AutotrackerRequestBundle:TripRequest:new.html.twig', array(
'tripRequest' => $tripRequest,
'form' => $form->createView(),
'tz' => $this->getUser()->getDateTimeZone(),
'map' => $mapService->getGoogleMap($tripRequest->getClientAgency()),
'geocoderUrl' => $mapService->getGoogleGeocoderUrl(),
));
}
/**
* Join existing trip page.
*
* @Route("/join", name="request_join")
* @Method({"GET", "POST"})
*/
public function joinAction(Request $request)
{
$user = $this->getUser();
$tz = $user->getDateTimeZone();
$agency = $user->getAgency();
$em = $this->getDoctrine()->getManager();
$formBuilder = $this->createFormBuilder();
$formBuilder
->add('address', TextType::class, [
'constraints' => [
new NotBlank(),
]
])
->add('latitude', HiddenType::class)
->add('longitude', HiddenType::class)
->add('address_autocomplete', PlaceAutocompleteType::class, [
'mapped' => false,
'api' => false,
'variable' => 'autocomplete_address_popup',
'components' => [AutocompleteComponentType::COUNTRY => 'md'],
'types' => [AutocompleteType::GEOCODE],
])
->add('favorites', EntityType::class, [
'mapped' => false,
'required' => false,
'placeholder' => 'Choose address',
'class' => 'AutotrackerUserBundle:FavoriteAddress',
'choices' => $agency->getFavoriteAddresses(),
'choice_label' => 'address',
])
->add('date', DateType::class, [
'label' => 'Date',
'widget' => 'single_text',
'input' => 'datetime',
'html5' => false,
'format' => 'dd.MM.yyyy',
])
->add('filter', SubmitType::class, [
'label' => 'Show requests',
])
->add('create', SubmitType::class, [
'label' => 'Create new request',
]);
$form = $formBuilder->getForm();
$form->handleRequest($request);
$tripList = [];
if ($form->isSubmitted() && $form->isValid()) {
$filterDate = $form->get('date')->getData()->setTime(0, 0);
$filterAddress = $form->get('address')->getData();
$filterLatitude = $form->get('latitude')->getData();
$filterLongitude = $form->get('longitude')->getData();
if ($form->get('filter')->isClicked()) {
$tripList = $em->getRepository('AutotrackerRequestBundle:TripRequest')
->findJoinable(
$filterDate,
$filterAddress
);
} elseif ($form->get('create')->isClicked()) {
return $this->redirectToRoute('request_new', [
'trip_date' => $filterDate->format('Y-m-d'),
'dest_addr' => $filterAddress,
'dest_lat' => $filterLatitude,
'dest_long' => $filterLongitude,
]);
}
}
$mapService = $this->container->get('autotracker.service.geo');
return $this->render('triprequest/join.html.twig', [
'form' => $form->createView(),
'tz' => $tz,
'tripList' => $tripList,
'map' => $mapService->getGoogleMap($user->getAgency()),
'geocoderUrl' => $mapService->getGoogleGeocoderUrl(),
]);
}
屏幕截图:https://prnt.sc/m2hvly
单击“选择地址”后,隐藏输入中的坐标-https://pp.userapi.com/c847219/v847219764/16748d/Dco4PV1g8h8.jpg
在“ /新”页面上的网址中提供-https://pp.userapi.com/c848520/v848520764/f11ff/u_4eCRexeDo.jpg
单击后退按钮后输入值-https://pp.userapi.com/c849020/v849020764/f587b/x7f4Pixpd10.jpg