【问题标题】:laravel error "ArgumentCountError Too few arguments to function App\Http\Controllers\UserController::messagesend(), 1 passed 2 expected"laravel 错误“ArgumentCountError 函数 App\Http\Controllers\UserController::messagesend() 的参数太少,预期 1 通过 2”
【发布时间】:2021-11-12 10:48:46
【问题描述】:

我正在尝试通过用户的 user_id 向用户发送消息 这是我的控制器

  public function messagesend(Request $request, $user_id){
        $data = array('details'=>$request->details,
        'email' =>$user_id->email);
        Mail::send('transactionmessage', $data, function($message) use ($data){
                $message->from ('test@test.com');
                $message->to($request->email);
                $message->subject($data['details']);
                
        });
          // echo $$request;
        return redirect('ongoingstatus')->with('success','Message Sent!');
    }

我的路线是

Route::post('/messagesend', [UserController::class, 'messagesend'])->middleware(['auth'])->name('messagesend');

不知道为什么会出现这个错误

Too few arguments to function App\Http\Controllers\UserController::messagesend(), 1 passed in /home/swit/public_html/manager/vendor/laravel/framework/src/Illuminate/Routing/Controller.php on line 54 and exactly 2 expected

这是我的blade.php

<form method="POST" action = "{{route('messagesend')}}">
                 @csrf
                 <input type = "hidden" value="{{$email}}" name ="email" />
                <div class="row">
                    <div class="col-md-8">
                        <div class="tab-content profile-tab" id="myTabContent">
                            <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
                                  
                        <textarea placeholder="Enter Message" name="details" rows="5" cols="60"  id = "details"></textarea><br>
 
                                  <button type = "submit" class = 'btn btn-outline-primary mr-2'>Send Message</button>
                                        
                            </div>
                            
                        </div>
                    </div>
                </div>
            </form>  

如果你知道我错在哪里,请帮助我 谢谢

【问题讨论】:

    标签: php html laravel performance laravel-8


    【解决方案1】:

    你的路线不带任何参数:

    Route::post('/messagesend', [UserController::class, 'messagesend'])->middleware(['auth'])->name('messagesend');
    

    但是,控制器方法需要两个:

    public function messagesend(Request $request, $user_id){
            $data = array('details'=>$request->details,
            'email' =>$user_id->email);
            Mail::send('transactionmessage', $data, function($message) use ($data){
                    $message->from ('test@test.com');
                    $message->to($request->email);
                    $message->subject($data['details']);
                    
            });
              // echo $$request;
            return redirect('ongoingstatus')->with('success','Message Sent!');
        }
    

    第一个参数 Request $request 是由 Laravel 使用依赖注入注入的。

    第二个需要从路由中获取,但是……它们没有参数。

    您有两种选择,具体取决于您要实现的目标:

    • 向您的路线添加参数:
    Route::post('/messagesend/{user_id}', [UserController::class, 'messagesend'])->middleware(['auth'])->name('messagesend');
    
    • 从控制器方法中删除参数$user_id

    【讨论】:

    • 感谢您的回复,所以如果我这样做` Route::post('/messagesend/{user_id}', [UserController::class, 'messagesend'])->middleware(['auth '])->name('messagesend') ` 我应该将什么传递给我的控制器?
    • 如果在路由中添加user_id参数,那么在调用该路由时必须将其添加到url中。 youproject.test//messagesend/12 par 示例,其中 12 是 user_id。然后在您的控制器中,$user_id 将填充 12。
    • @Tracy 如果您通过导航到 URL/messagesend/{user_id}(其中 {user_id} 是一个整数)重新安排您的路线,则应该触发 messagesend 函数
    【解决方案2】:

    表单所做的只是将Request $request 发布到您的路线。您没有将messagesend() 函数传递给$user_id

    【讨论】:

    • 请问我该怎么做,因为我觉得我已经将 user_id 传递给 messagesend() 函数了
    • @Tracy 你是在本地主机还是远程服务器上工作?
    • @FabioR。远程服务器
    • @Tracy 然后尝试在浏览器上导航到url-to-remote-server/messagesend/1(或您当前在数据库中拥有的任何 id)。这应该会触发messagesend() 函数
    猜你喜欢
    • 2019-06-29
    • 2018-05-23
    • 2019-04-21
    • 2020-01-26
    • 2021-03-17
    • 1970-01-01
    • 2022-08-17
    • 2019-10-29
    • 2020-04-22
    相关资源
    最近更新 更多