Laravel - вызов PHP-функции из Angular для обновления базы данных выдает ошибку: ожидается выражение - PullRequest
0 голосов
/ 16 октября 2018

Я работаю над приложением Laravel и только что добавил в форму пару полей, чтобы пользователи могли добавить два новых контакта в учетную запись.Поля отображаются в виде таблицы (файл - accounts-table.html) с:

<!--Letter Addressee Name -->
<td *ngIf="!responseData.loading" class="width-1 visible-lg-table-cell">
    <input type="text" name="letterAddresseeNameTextField" ng-value= getLetterAddresseeName(responseData) ng-change = "getLetterAddresseeName()"><br>


</td>

<!--Preferred Addressee Name -->
<td *ngIf="!responseData.loading" class="width-1 visible-lg-table-cell">
  <input type="text" name="preferredAddresseeNameTextField" ng-value = getPreferredAddresseeName(responseData) ng-change = "getPreferredAddresseeName()" ><br>

</td>

В TS для этой формы (account-table.ts) я добавил функции, которыевызываются атрибутами ng-change ячеек таблицы:

public getLetterAddresseeName(data) {
    if(data.myAccount='0') {
        //data.letterAddresseeName = letterAddresseeNameTextField.value;
        if(data.letterAddresseeName) {
            AccountsController::addAddresseesToAccount();
            console.log("data.letterAddresseeName: ", data.letterAddresseeName);
            return data.letterAddresseeName;
        }
        else {
            console.log("No letter addressee name in database ");
            return;
        }
    }
    else {
        if(data.groupTag == null) {
            console.log("data.groupTag == null ");
            return;
        }
        else if(data.groupTag.indexOf('PENDING') > -1) {
            console.log("data.group.indexOf('PENDING') > -1 ");
            return;
        }
        else {
            console.log("Else statement of getLetterAddresseeName() reached ");
            return;
        }
    }
}

public getPreferredAddresseeName(data) {
    if(data.myAccount='0') {
        if(data.preferredAddresseeName) {
            AccountsController::addAddresseesToAccount();
            console.log("data.preferredAddresseeName: ", data.preferredAddresseeName);
            return data.preferredAddresseeName;
        }
        else {
            console.log("No preferred addressee name in database ");
            return;
        }
    }
    else {
        if(data.groupTag == null) {
            console.log("data.groupTag == null ");
            return;
        }
        else {
            console.log("Else statement of getPreferredAddresseName() reached ");
            return;
        }
    }
}

Функция PHP addAddresseesToAccount(), которая вызывается в этих функциях TS для фактического добавления новых контактов в учетную запись с помощью:

AccountsController::addAddresseesToAccount();

определяется в AccountsController.php с помощью:

public function addAddresseesToAccount( Request $request)
{
    $account = app\Account::find($request->input('accountId'));
    //dd("Value of account: ", $account);
    if($request->input('letterAddresseeNameTextField') != null)
    {
        $account->letterAddresseeName = $request->input('letterAddresseeNameTextField'.value);
        $account->save();
    }
    else
    {
        dd("letterAddresseeNameTextField value is blank ");
    }

    if($request->input('preferredAddresseeNameTextField') != null)
    {
        $account->preferredAddresseeName = $request->input('preferredAddresseeNameTextField'.value);
        $account->save();
    }
    else
    {
        dd("preferredAddresseeNameTextField value is blank ");
    }
    return $account;
}

Когда я запускаю свое приложение с помощью команд:

gulp copy: angular

ng build --watch --sourcemaps = false

команда ng build начинает компиляцию Angular, но затем выдает ошибку с сообщением:

Ошибка в пути/accounts-table.ts(519, 36): ошибка TS1109: выражение ожидается.

path / accounts-table.ts (547, 36): ошибка TS1109: выражение ожидается.

Две строки, на которые он жалуется, - это строки, в которых я вызываю функцию PHP для фактического обновленияс новыми адресами, которые были введены в форму.

Может кто-нибудь указать мне, что я здесь делаю неправильно?Почему я получаю эти ошибки, говорящие мне, что выражение ожидается?Я не хочу, чтобы выражение возвращалось, просто чтобы обновить учетную запись в базе данных ...

1 Ответ

0 голосов
/ 17 октября 2018

Нет способа получить прямой доступ к функциям php из TS.Вам нужно будет связать функции с маршрутами в маршрутах / web.php и отправить данные с помощью AJAX.

...