代码之家  ›  专栏  ›  技术社区  ›  Noble-Surfer

Laravel-从角度调用PHP函数以更新数据库时出现错误:需要表达式

  •  0
  • Noble-Surfer  · 技术社区  · 6 年前

    <!--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;
            }
        }
    }
    

    这个 addAddresseesToAccount() 在这些TS函数中调用的PHP函数,以实际向帐户中添加新联系人:

    AccountsController::addAddresseesToAccount();
    

    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;
    }
    

    当我使用以下命令运行应用程序时:

    ng build--watch--sourcemaps=false

    这个 ng build 命令开始编译角度,但随后抛出一个错误,该错误表示:

    路径/帐户表。ts(547,36):错误TS1109:应为表达式。

    它抱怨的两行是我调用PHP函数用表单中输入的新地址实际更新帐户的行。

    有人能告诉我我做错了什么吗?为什么我会得到这些错误告诉我一个表达式是预期的?我不想返回表达式,只想更新数据库中的帐户。。。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Niko Peltoniemi    6 年前

    无法直接从TS访问php函数。您需要将函数与routes/web.php中的路由关联起来,并使用AJAX发送数据。