首页 > 解决方案 > 函数 App\Http\Controllers\TransactionsController::store() 的参数太少,通过了 1 个,预期正好有 2 个

问题描述

我有一个错误说:

函数 App\Http\Controllers\TransactionsController::store() 的参数太少,当我尝试在 TransactionsController 中创建事务并更新用户帐户时,1 个已通过,TransactionsController::store 中恰好有 2 个预期

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests\TransactionsRequest;
use App\Traits\MakeTransactions;
use App\User;
use App\Transaction;
use DB;

class TransactionsController extends Controller
{
    use MakeTransactions;

    public function create()
    {
        $accno = auth()->user()->accno;

        $account = DB::table('users')
            ->join('accounts', 'users.accno', '=', 'accounts.accno')
            ->select('users.*', 'accounts.*')
            ->get();

        return view('dashboard.user.make_a_transfer.create', compact('account'));
    }

    public function store(TransactionsRequest $requestFields,$id)
    {   
        $transactions = $this->Transfer($requestFields);

        $account = Account::find($id);

        $bal = $account->amt_paid + $transctions->amt;
        $account->total = $bal;
        $account->save(); 

        return redirect('/make_transfer')->with('success', 'Transaction has been made');
    }

    public function saveTransaction($data)
    {   
        
        return true;

    }
}

我的路线网络,PHP

Route::get('/make_transfer', 'TransactionsController@create')->name('make_transfer');
Route::post('/create/make_transfer',['as'=>'transactions.store','uses'=>'TransactionsController@store']);
    Route::get('/account_details', 'TransferController@details')->name('account_details');

我正在使用 create.blade.php 文件;

@extends('../../../layouts/dashboard')
@section('content')
<div class="page-wrapper">
            <div class="page-breadcrumb">
                <div class="row">
                    <div class="col-12 d-flex no-block align-items-center">
                        <h4 class="page-title"></h4>
                        <div class="ml-auto text-right">
                            <nav aria-label="breadcrumb">
                                <ol class="breadcrumb">
                                    <li class="breadcrumb-item"><a href="#">Home</a></li>
                                    <li class="breadcrumb-item active" aria-current="page">Make Transfer</li>
                                </ol>
                            </nav>
                        </div>
                    </div>
                </div>
            </div>
            <div class="container-fluid">
                <div class="card">
                    <div class="card-body wizard-content">
                        <h4 class="card-title">Make Bank Transfers</h4>
                        <h6 class="card-subtitle"></h6>

                        @if ($errors->any())
                        <div class="alert alert-danger">
                            <ul>
                                @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                                @endforeach
                            </ul>
                        </div>
                        <br /> 
                        @endif
                        <form id="example-form" action="/create/make_transfer/{id}" method="POST" class="m-t-40">
                            <div>
                            @csrf
                            <div class="form-group">    
                                <label for="reciever_name">Reciever Name:</label>
                                <input type="text" class="form-control" name="reciever_name" value="" />
                            </div>
                            <div class="form-group">    
                                <label for="reciever_bank">Reciever Bank:</label>
                                <input type="text" class="form-control" name="reciever_bank" value="" />
                            </div>
                            <div class="form-group">    
                                <label for="reciever_accno">Reciever Account Number:</label>
                                <input type="text" class="form-control" name="reciever_accno" value="" />
                            </div>
                            <div class="form-group">    
                                <label for="routing_no">Routing Number:</label>
                                <input type="text" class="form-control" name="routing_no" value="" />
                            </div>
                            <div class="form-group">    
                                <label for="amt">Amount:</label>
                                <input type="text" class="form-control" name="amt" value="" />
                            </div>
                            <div class="form-group">    
                                <label for="fund_option">Fund Options:</label>
                                <select name="fund_option">
                                    <option value="">Select Option</option>
                                    <option value="Domestic">Domestic Transfer</option>
                                    <option value="Local">Local Transfer</option>
                                    <option value="Offshore">International Transfer</option>
                                </select>
                            </div>
                            <div class="form-group">    
                                <label for="description">Description:</label>
                                <textarea class="form-control" name="description" value=""></textarea>
                            </div>
                                <button type="submit">Make Transfer</button>
                                <section>
                                    <input id="acceptTerms" name="acceptTerms" type="checkbox" class="required">
                                    <label for="acceptTerms">I agree with the Terms and Conditions.</label>
                                </section>
                            </div>
                        </form>
                    </div>
                </div>
            </div>

在用户提出转移请求后,我需要帮助使用$id更新帐户表。

标签: phplaravel

解决方案


public function store(TransactionsRequest $requestFields,$id)

因此,您的 Function 需要两个参数,一个$requestFields是您的函数,毫无疑问是 where is $id。您没有将 $id 传递给函数,

为什么我这么说是因为当我检查你的路线时,你没有传递任何名为 id 的参数。

Route::post('/create/make_transfer',['as'=>'transactions.store','uses'=>'TransactionsController@store']);

所以我建议你检查你是否为期望参数构建了你的程序,或者你只是从表单请求中使用它。

也许您的路线应该如下所示

Route::post('/create/make_transfer/{id}',['as'=>'transactions.store','uses'=>'TransactionsController@store']);

现在当你调用这条路线时,你必须像下面这样调用它

route('transactions.store',['id'=>$yourID])


推荐阅读