【发布时间】:2016-11-18 10:28:10
【问题描述】:
我需要将一个值从 Javascript 传递到我的 drupal 8 表单。
我在表单中添加了一个隐藏字段。 Javascript 正在计算一个值并将其写入该字段。但是我怎样才能得到函数 submitForm() 中的值呢?
使用隐藏字段是否是正确的方法?如果是这样,我该怎么做才能完成这项工作?
为了便于阅读,我删除了大部分代码。
FooForm.php:
class FooForm extends FormBase
{
public function getFormId()
{
return 'fooID';
}
public function buildForm(array $form, FormStateInterface $form_state)
{
//...here are lot's of elements not relevant right now
$form['myhiddenfield'] = ['#type' => 'hidden'];//adding hidden field.
$form['#attached']['library'][] = 'foo/foocalculator';
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state)
{
dpm($form_state->getValues()['myhiddenfield']);//not getting the calculated value.
}
foocalculator.js:
(function ($, Drupal) {
passToDrupal = $('#myhiddenfield');
$('#edit-submit--3').click(function (event) {
calcRoute(address, $editparcel.fieldValue().toString())
});
})(jQuery, Drupal);
function calcRoute(start, destination) {
var request = {
origin: start,
destination: destination,
};
directionsService.route(request, function (result, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
mydistance = result.routes[0].legs[0].distance.value;
passToDrupal.val(mydistance);//adds value to hidden field.
}
});
}
【问题讨论】:
标签: javascript drupal