Laravel 获取用户名时显示错误

Laravel 获取用户名时显示错误,laravel,lumen,Laravel,Lumen,显示错误:缺少App\Http\Controllers\AdminLoginController::name()的参数1 AdminLoginController:它是一个adminlogin控制器代码 class AdminLoginController extends Controller{ public function show(){ $res ="Hello world!"; return response()->json($res);

显示错误:缺少App\Http\Controllers\AdminLoginController::name()的参数1

AdminLoginController:它是一个adminlogin控制器代码

class AdminLoginController extends Controller{

public function show(){

        $res ="Hello world!"; 

        return response()->json($res);
    }

     public function log() {

        $users = AdminLogin::all();

        return response()->json($users);
    }    
    public function name($username) {
    $user = AdminLogin::where('username',$username)->first();
    return response()->json($user);
    } 
RouteLoginController:它是一个adminlogin控制器代码:

<?php

$app->get('/', function () use ($app) {
    return $app->version();
});

$app->group(['prefix' => 'api/v1'], function ($app)
{
    $app->get('adminlogin', 'AdminLoginController@show'); //get single route
    $app->get('user', 'AdminLoginController@log'); //get single route
    $app->get('username', 'AdminLoginController@name'); //get single route
    $app->post('adminlogin', 'AdminLoginController@login'); //get single route

});

您可能正在使用ajax请求调用此函数,并将名称放入查询字符串中。在这种情况下,
name
参数将不会作为函数的属性发送,而是作为请求对象的一部分

您可以这样解决此问题:

public function name(\Illuminate\Http\Request $request) {
    $user = AdminLogin::find($request->username);
    return response()->json($user);
} 
你应该试试这个:

public function name($username) {
    $user = AdminLogin::where('username',$username)->first();
    return response()->json(['user' => $user]);
} 

public function name(\Illuminate\Http\Request $request) {
    $user = AdminLogin::where('username',$request->username)->first();
    return response()->json(['user' => $user]);
} 

控制器方法采用用户名参数,但路由绑定未传递用户名参数。改变路线

$app->get('username', 'AdminLoginController@name');

如果不想更改路由,请将控制器函数签名更改为以下内容(如其他答案所示),并确保在调用url时将“用户名”作为请求参数传递

public function name(\Illuminate\Http\Request $request) {
    $user = AdminLogin::where('username',$request->username)->first();
    return response()->json(['user' => $user]);
}

我认为您在没有参数的情况下调用name方法您的
name
method调用缺少参数。您必须将参数传递给方法调用。show your name方法调用part@krunalPlease show来完成代码,包括路由代码和控制器code@Krunal请显示您的路由和控制器代码。@krunal使用公共函数名(\illumb\Http\Request$Request){$user=AdminLogin::where('username',$Request->username)->first();return response()->json($user);}哪个答案???@krunal使用return response()->json($user);返回response()->json(['user'=>$user]);但是我希望直接使用username,而不在parameter中传递username。您希望您的url看起来如何?如果您希望在url example.com/api/v1/user/Krunal中传递username,请使用我在回答中提到的路由更改
$app->get('user/{username}', 'AdminLoginController@name');
public function name(\Illuminate\Http\Request $request) {
    $user = AdminLogin::where('username',$request->username)->first();
    return response()->json(['user' => $user]);
}