Как обратиться к методу Bitrix из Laravel?

Ссылка скопирована
1 ответ

У Битрикс есть "надстройка" из Laravel
из интерфейса ларавеоа мне необходимо изменить пароль битрикс пользователя.
Сейчас так:

$rsUser        = CUser::GetByID($bitrixId);         $currentBxUser = $rsUser->Fetch();          if (isset($data['password']))         {             $rsUser->ChangePassword( // <--                 $currentBxUser['LOGIN'],                 md5($currentBxUser['CHECKWORD']),                 $data['password'],                 $data['password']             );         }

$rsUser = CUser::GetByID($bitrixId); $currentBxUser = $rsUser->Fetch(); if (isset($data['password'])) { $rsUser->ChangePassword( // <-- $currentBxUser['LOGIN'], md5($currentBxUser['CHECKWORD']), $data['password'], $data['password'] ); }

и конечно же очевидно что будет ошибка -

"message": "Call to undefined method CDBResult::ChangePassword()",     "exception": "Error",

"message": "Call to undefined method CDBResult::ChangePassword()", "exception": "Error",

как мне обратиться к этому методу, чтобы изменить пароль у пользователя?

Дополнительно:

<b>$rsUser->ChangePassword( </b>
Так и должно быть?

  • Ну а у какого класса есть этот метод если у класса CDBResult его нет?
  • Дмитрий, CUser

    если прописать

    $rsUser = new CUser(); $rsUser-&gt;ChangePassword(...)

    $rsUser = new CUser(); $rsUser-&gt;ChangePassword(...)

    выскакивает
    "message": "Undefined array key "EXTERNAL_AUTH_ID"",

    что ставит в недоумение , как поняла этот ключ нужен для авторизации

  • Chernichko, ну всех остальных ставит в недоумение то что мы должны как то помочь без кода. Что содержит CUser, как он связан с битрикс и так далее.
  • Скорее всего вам надо сделать в битриксе API end point. и спокойно в него стучатся
  • Ответы:

    Есть же пример из документации Битрикс

    global $USER; $arResult = $USER-&gt;ChangePassword("admin", "WRD45GT", "123456", "123456");

    global $USER; $arResult = $USER-&gt;ChangePassword("admin", "WRD45GT", "123456", "123456");

    Имхо, эта функция сложная для использования, надо знать контрольную строку для восстановления пароля.

    Проще

    $user = new CUser; $fields = array('PASSWORD' =&gt; 'Parol1', 'CONFIRM_PASSWORD' =&gt; 'Parol1'); $user-&gt;Update($ID, $fields);

    $user = new CUser; $fields = array('PASSWORD' =&gt; 'Parol1', 'CONFIRM_PASSWORD' =&gt; 'Parol1'); $user-&gt;Update($ID, $fields);

    • global $USER;

      Все что вам надо знать про битрикс...

    • Тогда не понятно причем тут ларавел если CUser это класс битрикса
    • Дмитрий, Так ведь у автора почему-то
      У Битрикс есть "надстройка" из Laravel
      из интерфейса ларавела мне необходимо изменить пароль битрикс пользователя.
      Я искренне не понимаю, зачем так делать.
    • koder_1, видимо битрикс чисто Админка для редакторов, а так Laravel оттуда данные дёргает. И действительно, непонятно зачем)
    • makapohmgn, у меня такое было несколько лет назад. Клиент - официальный дилер. У клиента свой собственный сайт с какими то своими вещами на Битриксе. Они к нему привыкли и у них там все хорошо. Но центр выдает постоянные обновления для сайта и требует в короткие сроки эти обновления применить. Причем эти обновления присылаются в виде Laravel сборки. Чтобы каждый раз не вносить огромное количество правок извернулась так, что сайт состоит частично из Битрикс, частично из Laravel. Причем в Laravel есть "переходник" подключающий ядро битрикса и в модельках дёргает данные из Битрикс.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Антон С. Ответ

    Для того чтобы обратиться к методу Bitrix из Laravel, необходимо использовать API Bitrix. Bitrix обладает REST API, который позволяет взаимодействовать с системой из других приложений, в том числе из Laravel.

    Прежде всего, необходимо настроить соединение с API Bitrix. Для этого в Laravel можно использовать Guzzle HTTP client, который позволяет делать HTTP запросы. Ниже приведен пример кода на PHP, демонстрирующий как обратиться к методу Bitrix из Laravel:

    use GuzzleHttp\Client;
     
    $client = new Client();
    $response = $client-&gt;request('GET', 'https://your-bitrix-url/rest/method.name', [
        'query' =&gt; [
            'param1' =&gt; 'value1',
            'param2' =&gt; 'value2',
            // Другие параметры метода
        ],
        'headers' =&gt; [
            'Authorization' =&gt; 'Bearer your-access-token',
        ],
    ]);
     
    $body = $response-&gt;getBody();
    $data = json_decode($body);
     
    // Обработка полученных данных из Bitrix

    use GuzzleHttp\Client; $client = new Client(); $response = $client-&gt;request('GET', 'https://your-bitrix-url/rest/method.name', [ 'query' =&gt; [ 'param1' =&gt; 'value1', 'param2' =&gt; 'value2', // Другие параметры метода ], 'headers' =&gt; [ 'Authorization' =&gt; 'Bearer your-access-token', ], ]); $body = $response-&gt;getBody(); $data = json_decode($body); // Обработка полученных данных из Bitrix

    В данном примере мы создаем объект Guzzle HTTP client, делаем GET запрос к методу Bitrix, передавая необходимые параметры и заголовки (включая авторизацию с помощью токена доступа). После получения ответа, мы можем обработать данные из Bitrix, например, преобразовать JSON в массив или объект.

    Не забудьте заменить 'https://your-bitrix-url/rest/method.name' на реальный URL вашего Bitrix и настроить соответствующие параметры запроса. Также убедитесь, что у вас есть доступ к API Bitrix и корректный токен доступа для авторизации.

    Это лишь пример реализации, в зависимости от конкретной задачи и структуры вашего проекта, код может быть изменен или дополнен. Надеюсь, данная информация поможет вам обратиться к методу Bitrix из Laravel успешно.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно