Возврат объекта из Javascript в блейд, а затем в контроллер - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть вопрос о том, как передать данные из Javascript на мой блейд, а затем в ответ на мой контроллер в Laravel.Моя цель состоит в том, чтобы проверить, существует ли конкретный идентификатор пользователя, но позже в контроллере также используют рядом с его подтвержденным идентификатором свой почтовый адрес.С помощью jquery я проверяю, существует ли конкретный счетчик пользователей в LDAP следующим образом:

url: "getADobject/" + $('#supervisor').val(),
data: '',
dataFilter: function(data) {
                  var parsedData = JSON.parse(data);

                  $(".loading").css('visibility', 'hidden');
                  for ( var i = 0; i < parsedData.user_details.length; i++) {
                    console.info(parsedData.user_details[i]);
                    if(parsedData.user_details[i].uid === $('#supervisor').val()){
                      console.info("Found user in JSON: " + JSON.stringify(parsedData.user_details[i]));
                      return true;
                    }
                  }

                  return false;
                },

Это на самом деле работает, и в блейде поле ввода текста дважды проверяет, существует ли пользователь в LDAP.Как вы также можете видеть, я просто проверяю определенное значение (user_details [i] .uid) из возвращенных данных и затем возвращаю true или false.Однако на следующем шаге после нажатия кнопки «Отправить» в моем блейде я хочу, чтобы в переменной запроса parsedData в контроллере был адрес электронной почты супервизора, который я уже однажды запросил.

Моя проблема в том,сейчас я проверяю, существует ли пользователь, но больше ничего не делает с данными результата.Конечно, я мог бы запросить данные снова в контроллере, но это снова будет тот же запрос.Поэтому мой вопрос: как я могу сохранить parsedData в виде глобальной переменной, чтобы позже в моем контроллере, в запросе Request $, также были доступны данные, не отображая их в блейде в новой или скрытой,поле.

Заранее спасибо

Стефан


Обновление из-за пробелов в разделе комментариев:

Привет,

Сначала спасибо за подробный комментарий.Я должен признать, что я тоже новичок в веб-разработке и просто попробую что-то сделать, поэтому я не могу на 100% понять, что вы мне тестируете;)

Когда я делаю проверку через JQuery, я спрашиваю свой LDAPконтроллер для проверки введенного имени пользователя.Я не хочу, чтобы пользователь мог добавить руководителя, которого не существует.Этот контроллер уже возвращает всю необходимую информацию, которую я хотел бы передать обратно контроллеру блейда, который я позже буду использовать, когда нажму кнопку «Отправить», и будет перенаправлен на функцию: public function store (Request $ request) со всеми другими заполненнымиполучить информацию из этого блейда, к которой я могу получить доступ: $ request-> input ('firstname');.

Итак, вы предлагаете мне вызвать функцию axios.post и использовать ее для отправки всех данных илиМогу ли я использовать его несколько раз для передачи данных с контроллера LDAP, а также данных из блэйд-формы?


В настоящее время моя переменная $ request в контроллере выглядит следующим образом:

array:5 [▼
  "_token" => "VN7dFO2X1T1jfwfVduhRmxQFZDrli058Z8iJ6voi"
  "username" => "king"
  "firstname" => "Plow"
  "secondname" => "King2"

Но я хотел бы добавить еще одну переменную, такую ​​как:

  "mailaddress" => "King@hotmail.com"

, которую я хотел бы определить, хотя jquery в javascript, где данные из контроллера содержат эту информацию, но я не хочуопределить дополнительное поле в моем блейде, как для имени:

<div><input id="firstname" name="firstname" type="text"></div>
<input type="submit" value="Update User" class="btn btn-primary">

Хорошо, я мог бы просто добавить это такмой javascript:

document.getElementById("supervisormail").value = parsedData.user_details[i][0].mail[0];

и это на мой клинок:

<input type="hidden" id="supervisormail" name="supervisormail" >

Но я не так доволен решением.Думаю, было бы лучше, если бы я мог просто добавить его из-за JavaScript без каких-либо изменений в блейде

1 Ответ

0 голосов
/ 27 сентября 2019

Вы не передаете данные из javascript в php таким образом.Я рекомендовал бы вам создать новый контроллер или добавить новый метод к существующему контроллеру, который ожидает данные, которые вы хотите передать на свой блейд.

Таким образом, вы можете просто использовать axios для этого случая, например так:

axios.post('/your/route', yourdata)
     .then(response => {
        // scucess
        console.log(response.data);
     })
     .catch(error => {
       // error
       console.log(error.data);
     });

И в методе вашего контроллера, чтобы получить запрос и работать дальше, вы можете просто сделать это:

public function store(Request $request) {
    dd($request->all()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...