@Alex135

Как в YII2 передать переменную из JavaScript в ActiveForm?

Код заканчивается такой функцией и кодом
function savecoordinats (){	
		var new_coords = [coords[0].toFixed(4), coords[1].toFixed(4)];	
		myPlacemark.getOverlaySync().getData().geometry.setCoordinates(new_coords);
		document.getElementById("latlongmet").value = new_coords;
		document.getElementById("mapzoom").value = myMap.getZoom();
		var center = myMap.getCenter();
		var new_center = [center[0].toFixed(4), center[1].toFixed(4)];	
		document.getElementById("latlongcenter").value = new_center;	
	}

<div id="map"></div>  
<div id="coord_form">
<p><label>Координаты метки: </label><input id="latlongmet" class="form-control" name="icon_text" /><br/>
<label>Масштаб: </label><input id="mapzoom" class="form-control" name="icon_text" /></p>
<p><label>Центр карты: </label><input id="latlongcenter" class="form-control" name="icon_text" /></p>
</div>


id="latlongmet" имеет вид 56.3224,44.0061
Как эту переменную передать в ActiveForm
$form->field($model, 'map')->textInput(['maxlength' => true])

?
  • Вопрос задан
  • 632 просмотра
Пригласить эксперта
Ответы на вопрос 3
qonand
@qonand
Software Engineer
Что по Вашему означает передать переменную из JavaScript в ActiveForm? JavaScript работает на клиентской стороне, php (который формирует ActiveForm) на серверной. Вы хотите записать результат выполнения Вашего js-скрипта в поле ввода формы? тогда реализовывайте это на js, например:
$("#latlongmet").val(value);
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как эту переменную передать в ActiveForm

Вы не понимаете видимо жизненный цикл web, а он такой:
идет запрос из браузера на сервер
сервер запускает yii, в том числе и отрабатывает виджет ActiveForm, генерируя некий html
этот html отдается обратно браузеру
браузер на его основе рендерит, то что вы и видите на экране.
Так что Ваш вопрос "как вернуться в прошлое?" - никак
Но решить Ваш вопрос можно, можно с помощью js манипулировать тем html, который получился в результате работы ActiveForm. То есть влиять надо не на ActiveForm, а на результат его (виджета ActiveForm) работы. А результатом его работы являются некий html и некий js, который занимается валидацией. И изменять их можно.
И как Вам правильно написал Максим Федоров это делается 1 строчкой jquery. Вам стоит потратить 2-3 часа и начать читать учебник по jquery. Уверяю, что все вопросы отпадут на 3 часе чтения.
Ответ написан
Комментировать
@Alex135 Автор вопроса
Спасибо, почитал учебник и разобрался.
В строке
document.getElementById("latlongmet").value = new_coords;

заменил "latlongmet" на нужное значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы