Php 模型未传递给控制器laravel

Php 模型未传递给控制器laravel,php,laravel,Php,Laravel,我一直在学习Laravel,并试图在登录视图中获得一个表单来绑定到一个模型,然后将该模型传递给控制器,然后将该模型传递给另一个控制面板视图,以显示它的username属性,以测试它是否工作。用户名未显示,因此模型似乎没有绑定 我已经看了文档,不知道我还需要做什么/我做错了什么 谢谢 模型 更改 <?php /** * Created by PhpStorm. * User: Theo * Date: 25/01/2018 * Time: 19:35 */ namespace

我一直在学习Laravel,并试图在登录视图中获得一个表单来绑定到一个模型,然后将该模型传递给控制器,然后将该模型传递给另一个控制面板视图,以显示它的username属性,以测试它是否工作。用户名未显示,因此模型似乎没有绑定

我已经看了文档,不知道我还需要做什么/我做错了什么

谢谢

模型

更改

<?php
/**
 * Created by PhpStorm.
 * User: Theo
 * Date: 25/01/2018
 * Time: 19:35
 */


namespace App\Http\Controllers\Models;


class User
{
    public $id;
    public $username;
    public $password;
}

您应该使用artisan命令行通过键入
php artisan make:模型用户
然后将在
app/
文件夹中为您创建一个模型
User

您正在
app/Http/Controllers
中创建模型,该模型仅用于存储控制器


如果你想要一个基本的身份验证系统,你可以运行php artisan make:auth,这将生成一个带有基本身份验证系统的引导样板文件,你没有任何路由参数

为了使用路由模型绑定,您需要使用资源路由或指定等于控制器方法参数名称的路由参数

因此,如果你有:

    public function attemptLogin(User $user) {}
要插入用户实例,您需要有一个与$User匹配的路由参数:

    Route::post('login/attemptLogin/{user}', 'LoginController@attemptLogin');

但是,我不太清楚为什么要尝试登录特定用户,而不是将用户名作为请求变量提供。

如果将用户模型的名称空间更改为
App\Http\Controllers\Models\user
,则需要更新
config/auth.php
文件

搜索此代码:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
],
并将模型部分更改为:
'model'=>App\Http\Controllers\Models\User::class,


顺便说一句:将您的模型移动到
Http
文件夹下不是一个好主意,因为您将Http层与业务层混为一谈。

@Theo Crawly现在检查一下。我已经有所改进。如果这解决了您的问题,请将其标记为正确答案,让其他人知道。很高兴提供帮助:)谢谢,用户名仍然没有显示在仪表板上,因此表单不能绑定感谢您的回复,我已经使用命令重新创建了模型,但我仍然认为表单没有绑定到它,或者它没有被传递到controllerchange
new User()
to
User::all()
这可能会解决你的问题老实说,我想你还有更多的阅读要做。您的代码有很多问题,因此您似乎只是浏览了一下文档,并没有真正阅读/理解它。是否要详细说明这些问题?我想确保我做的每件事都是正确的谢谢,改变会让我犯以下错误。我在网上查过了,找不到解决办法。缺少[Route:][URI:login/attemptLogin/{user}]所需的参数。(视图:C:\xampp\htdocs\panel\resources\views\pages\login\index.blade.php)
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('players');
});

/*
Route::get('/players/{uid}', function ($uid) {
    return view('players' . $uid);
});
*/

Route::get('dashboard', 'DashboardController@index');

Route::get('login', 'LoginController@index');
Route::post('login/attemptLogin', 'LoginController@attemptLogin');
<?php
/**
 * Created by PhpStorm.
 * User: Theo
 * Date: 25/01/2018
 * Time: 19:35
 */


namespace App\Http\Controllers\Models;


class User
{
    public $id;
    public $username;
    public $password;
}
<?php
namespace App;
/**
 * Created by PhpStorm.
 * User: Theo
 * Date: 25/01/2018
 * Time: 19:35
 */

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = ['username'];

    protected $hidden = ['password'];
}
    public function attemptLogin(User $user) {}
    Route::post('login/attemptLogin/{user}', 'LoginController@attemptLogin');
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],
],