Php 模型未传递给控制器laravel
我一直在学习Laravel,并试图在登录视图中获得一个表单来绑定到一个模型,然后将该模型传递给控制器,然后将该模型传递给另一个控制面板视图,以显示它的username属性,以测试它是否工作。用户名未显示,因此模型似乎没有绑定 我已经看了文档,不知道我还需要做什么/我做错了什么 谢谢 模型Php 模型未传递给控制器laravel,php,laravel,Php,Laravel,我一直在学习Laravel,并试图在登录视图中获得一个表单来绑定到一个模型,然后将该模型传递给控制器,然后将该模型传递给另一个控制面板视图,以显示它的username属性,以测试它是否工作。用户名未显示,因此模型似乎没有绑定 我已经看了文档,不知道我还需要做什么/我做错了什么 谢谢 模型 更改 <?php /** * Created by PhpStorm. * User: Theo * Date: 25/01/2018 * Time: 19:35 */ namespace
更改
<?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现在检查一下。我已经有所改进。如果这解决了您的问题,请将其标记为正确答案,让其他人知道。很高兴提供帮助:)谢谢,用户名仍然没有显示在仪表板上,因此表单不能绑定感谢您的回复,我已经使用命令重新创建了模型,但我仍然认为表单没有绑定到它,或者它没有被传递到controllerchangenew User()
toUser::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,
],
],