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

Laravel/PHP-404路由返回不存在的页面

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

    我正在开发一个Laravel/Angular应用程序,刚刚添加了一个函数,允许用户在通过临时付款提醒页面生成PDF信函/电子邮件时设置自定义收件人名称。

    角度函数在temporary-reminders.ts中定义为:

    updatePreferredAddresseeDetails($event, payer) {
        console.log("updatePreferredAddresseeDetails() called ");
        console.log("$event: ", $event);
        console.log("taxpayer: ", payer);
        console.log("account.preferredAddressee: ", payer.preferredAddresseeName);
    
        //$event.currentTarget.cancelBubble = true;
        const contact = payer['contacts'][$event.currentTarget.selectedIndex]; /* Need to ensure contact is defined here, so it can be used below- currently null here */
    
        console.log("contact: ", contact);
        //const data = (<any>Object).assign({}, payer, { transactionContactId: contact.userId });
        //console.log("data: ", data);
    
        payer.loading = true;
        payer.originalAddresseeName = payer.addresseename;
        payer.originalAddresseeNamePdf = payer.addresseenamepdf;
    
        payer.ADDRESSEENAME = $event.contactPreferredName;
        payer.ADDRESSEENAMEPDF = $event.contactPreferredAddresseeName;
        /*contact.originalAddresseeName = payer.addresseename;
        contact.originalAddresseeNamePdf = payer.addresseenamepdf;
    
        contact.ADDRESSEENAME = $event.contactPreferredName;
        contact.ADDRESSEENAMEPDF = $event.contactPreferredAddresseeName; */
    
        console.log("payer.addresseename: ", payer.ADDRESSEENAME);
        console.log("payer.addresseenamepdf: ", payer.ADDRESSEENAMEPDF);
        //this.provService.updatePreferredAddresseeDetails(data).subscribe(
        this.provService.updateTransactionContact(contact).subscribe(
            (response:any) => {
                payer.addresseename = response.addresseename;
                payer.addresseenamepdf = response.addresseenamepdf;
    
                const message = new Message();
                message.type = MessageType.SUCCESS;
                message.message = 'Preferred Addressee details have been updated. ';
                this.messagingService.emitMessage(message);
    
                payer.loading = false;
            },
            (error:any) => {
                //reset the names back to what they were originally because saving failed
                payer.addresseename = payer.originalAddresseeName;
                const message = new Message();
                message.type = MessageType.ERROR;
                message.message = error.message || 'There was a problem updaing the preferred addressee details. If the problem persists, please contact us.';
                this.messagingService.emitMessage(message);
    
                payer.loading = false;
            }
        );
    }
    

    在PHP控制器中,我定义了以下函数:

    public function updatePreferredAddresseeDetails(Request $request)
    {
        try
        {
            DB::beginTransaction();
    
            $transactionContactId = $request->input('transactionContactId');
            $transactionItemId = $request->input('transactionItemId');
    
            if ($transactionItem = transactionItem::find($transactionItemId))
            {
                $transaction = $transactionItem->transaction;
    
                if (User::canAccessTransaction( auth()->user()->user, $transaction))
                {
                    $transaction->savePropertyValueByPropertyTag('TRANSACTIONCONTACT', $transactionContactId);
                    $account = Account::find($transaction->accountId);
                    $account->savePropertyValueByPropertyTag('ADDRESSEENAME', $request->input('contactPreferredName'));
                    $account->savePropertyValueByPropertyTag('ADDRESSEENAMEPDF', $request->input('contactPreferredAddresseeName'));
    
                    $trasaction->save();
                    $account->save();
    
                    /*$newContact = User::find($transactionContactId); /*shouldn't need this line, as it's not a new contact- just updating an
                                                                        existing one*/
                    DB::commit();
    
                    return response()->json([
                        'success' => true,
                        'transactionItemId' => $transactionItem->transactionItemId,
                        'transactionId' => $transactionItem->transactionId,
                        'transactionContactId' => $transactionContactId, 
                        'addresseeName' => $account->ADDRESSEENAME,
                        'addresseeNamePdf' => $account->ADDRESSEENAMEPDF,
                        //'transactionContactName' => $newContact,
                        //dd(response);
                    ]);
                }
    
                dd("transactionItem: ", $transactionItem);
            }
            else
            {
                dd("transactionItem could not be found ");
            }
        }
        catch(Excetpion $e)
        {
            dd("exception caught: ", $e);
        }
    }
    

    routes/web.php 文件,我已将路由添加到 prov 集团:

    Route::group(['prefix' => 'prov'], function() {
        ...
        Route::post('/preferredAddressee', 'WebApi\ProvController@updatePreferredAddresseeDetails');
    });
    

    当前,当页面加载时,我在已添加到表单的字段中输入值,以便能够设置/修改 addresseename addresseenamepdf 值,当我从这些字段中取出制表符时 updatePreferredAddresseeDetails()

    发布。。。404(未找到)

    无法解析的响应

    你试图访问一个不存在的页面。

    为什么会这样?我在这里走错路线了吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Noble-Surfer    7 年前

    所以发生这个问题是因为我在 service.ts 文件。。。把那条线从

    private preferredAddresseeDetailsUpdateUrl: string = BASE_URL + '/web-api/preferredAddressee';
    

    private preferredAddresseeDetailsUpdateUrl: string = BASE_URL + '/web-api/t/prov/preferredAddressee';
    

    路线被正确地绘制出来了,我再也看不到了 page cannot be found 错误。