Показана отладка PHP, но функция не выполняется полностью, в консоли нет ошибок - PullRequest
0 голосов
/ 18 сентября 2018

Я очень новичок в PHP и HTTP и столкнулся с проблемой, которая кажется несколько странной при попытке отладки функции:

Есть страница, отображающая список транзакций (как исторических, так и ожидающих рассмотрения).).Информация отображается в таблице со строкой для каждой транзакции.Каждая транзакция отображает такую ​​информацию, как имя клиента, идентификатор, сумма, контакт транзакции, временные контакты, статус и т. Д.

Пользователь может обновить контакт транзакции, выбрав имя из предварительно заполненного раскрывающегося списка в транзакции.Контактная колонка.Если они хотят добавить новое имя в этот выпадающий список, они могут щелкнуть кнопку «Изменить» в ячейке в списке «Предварительные контакты», которая откроет диалоговое окно, отображающее форму с полями «Имя», «Фамилия» и'Адрес электронной почты'.Как только эти данные были добавлены, они могут нажать кнопку «Добавить пользователя» в форме, и новый пользователь будет добавлен в список контактов в этой ячейке.Все пользователи в этой ячейке будут отображаться в раскрывающемся списке в ячейке Контакт транзакции для этой транзакции (вместе с некоторыми другими контактами по умолчанию).

Однако в настоящее время существует проблема, когда пользователь добавляетновый контакт в ячейку «Временные контакты», хотя этот пользователь затем отображается в раскрывающемся списке «Контакт транзакции», когда вы выбираете нового пользователя, отображается ошибка о том, что пользователь не существует.Однако, если вы обновите страницу после добавления контакта в ячейку Временные контакты, а затем попытаетесь выбрать его в раскрывающемся списке Контакт транзакции, его можно будет выбрать.

Я сузил проблемучтобы быть где-то в функции addAccountUser(), определенной в UserController.php:

public function addAccountUser( AddAccountUsersRequest $request )
{
  dd('addAccountUser() being called ');
  //dd($request);
  $users = $request->input('users');
  $type = $request->input('type');
  $accountId = $request->input('accountId');
  dd('Value of users: ');
  dd($type);

      // If adding an agent, the new user should be agent, else the created user will be direct
      $userType = $type == 'taxfirm-agent' ? UserType::where('userTypeTag', 'AGENT')->first() : UserType::where('userTypeTag', 'DIRECT')->first();
      $messages = array();
      $hasWarningMessages = false;

      try
      {
          DB::beginTransaction();

        foreach ($users as $userRaw)
        {

              $details = array(
                  'firstName' => $userRaw['firstName'],
                  'lastName'  => $userRaw['lastName'],
                  'email'     => $userRaw['email'],
                  'password'  => uniqid(),
                  'userTypeId' => $userType->userTypeId,
                  'accountId' => (!empty($accountId)) ? $accountId : null
              );
        $propertyValues = array();

        // Adding tax agent
        if ($type == 'taxfirm-agent') {
                  $group = $userRaw['role'];
          $rv = $this->addTaxfirmAgent($details, $group);
        }
        else if($type == 'taxfirm-direct') {
          $rv = $this->addTaxfirmDirectContact($details);
        }
        else {
                  $group = $userRaw['role'];
          $rv = $this->addTaxpayerDirectContact($details, $group);
        }

            DB::commit();

        if ($rv['status'] !== 'SUCCESS') {
            if (!isset($messages[$rv['status']])) {
              $messages[$rv['status']] = array(
                'message' => StatusMessage::getMessage($rv['status']),
                'data' => [],
              );
            }

            $messages[$rv['status']]['data'][] = [$userRaw['email'], ucfirst($userRaw['firstName']), ucfirst($userRaw['lastName'])];

            if (!$hasWarningMessages)
            {
              $hasWarningMessages = true;
            }
        }
        }
    }
      catch(\Exception $e)
      {
          DB::rollback();
    return response()->json(array(
      'success' => false,
        'exceptionCode' => $e->getCode(),
        'exceptionMessage' => $e->getMessage().' - '.$e->getFile().' - '.$e->getLine()
    ), 400);
      }

      // When returning $messages to angular, the array is turned into an object
      // which is not desirable. This is a workaround so that the messages are returned
      // as an array
      $outputMsg = array();
      foreach ($messages as $value) {
          $outputMsg[] = $value;
      }

  return response()->json(array(
    'success' => true,
    'hasWarningMessages' => $hasWarningMessages,
          'result' => $outputMsg,
          'users' => $rv['user']->user,
  ));
}

В настоящее время, когда я пытаюсь добавить нового пользователя в ячейку Временного контакта для транзакции, в браузере отображается ошибка, котораяговорит:

Произошла ошибка при добавлении вашего пользователя.Если проблема сохраняется, пожалуйста, свяжитесь с нами.

Я вижу отладку addAccountUser() being called с самого начала функции addAccountUser() на вкладке Сеть -> Предварительный просмотр консоли моего браузера на этом этапе,но не вижу добавленную мной отладку Value of users: или $type, которая предполагает, что что-то идет не так в одной из следующих трех строк:

$users = $request->input('users');
$type = $request->input('type');
$accountId = $request->input('accountId');

Я не до конца понимаючто происходит в этих трех строках ... Я знаю, что это HTTP-запросы, но на самом деле не знаю, какую информацию они запрашивают или откуда ...

Может кто-нибудь указать мне правильное направлениечтобы решить это?

1 Ответ

0 голосов
/ 18 сентября 2018

Когда вы вызываете функцию dd(), скрипт выдаст все, что было дано этой функции, и завершит работу впоследствии.Таким образом, он не будет выполнять ни один из следующих кодов.

Итак, такие вещи как:

dd('Value of users: ');
dd($type);

никогда не будут работать, потому что второй dd() никогда не будет выполнен, потому что скрипт завершится послепервый dd().

PHP на стороне сервера, поэтому вы должны отрисовать что-то на сервере и отобразить это в браузере.PHP не может писать в консоль браузера.Как мне отладить это, удалив первый вызов dd() (dd('addAccountUser() being called ');) и посмотреть, будет ли достигнут следующий вызов dd().

Если это запрос на публикацию в вашем браузере,Вы можете просмотреть запрос в консоли разработчика (F12) и посмотреть, что ответ от бэкэнда.Если это что-то вроде Value of users:, то вы знаете, что второй вызов dd() может быть достигнут.

Кроме того, сохранение dd() в вашем контроллере всегда будет возвращать код ошибки во внешний интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...