在我的应用程序中,我有一个用户表和一个个人资料表。当用户进入他们的 Jmeter 板时,他们应该可以点击一个链接来查看他们的个人资料页面。<a href="{{ route('profiles.show',$profiles->id)}}">link to your profile page</a>
但是,我收到错误:未定义路由[profiles.show]。
我是一个新手,不清楚如何链接注册用户与他/她的个人资料页。所有用户都应该有一个个人资料页注册。
我希望得到一些指导!以下是我目前所掌握的信息:
个人资料页面链接
<a href="{{ route('profiles.show',$profiles->id)}}">link to your profile page</a>
配置文件控制器.php
namespace App\Http\Controllers;
use App\Profile;
use Illuminate\Http\Request;
class ProfilesController extends Controller
{
public function show($id)
{
$profile = Profile::find($id);
return view('profiles.show', compact('profile'));
}
}
配置文件.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
public function user()
{
return $this->belongsTo('User');
}
}
路由/web.php
Route::get('pages/profiles', 'ProfilesController@show');
配置文件.blade.php
- 这只是一个非常简单的页面 *
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>{{ $user->user_id }}</h1>
<p>{{ $user->about_me }}</p>
</body>
</html>
解决方案
我发现了一个简单的解决方案,我想把它发布在这里,以帮助其他可能在创建用户配置文件页面方面遇到困难的人。下面假设您的数据库中已经有一个用户表,现在您想创建一个配置文件表,并将用户ID连接到他们的配置文件页面。
这是帮助我的the video。
创建表格
php artisan make:migration create_profiles_table
这将创建一个迁移文件:
2019_09_22_213316_create_profiles_table
打开迁移文件并添加所需的额外列:
$table->integer('user_id')->unsigned()->nullable();
$table->string('about_me')->nullable();
将这些迁移到数据库
php artisan migrate
现在我们已经对数据库进行了排序,我们需要创建一个控制器来控制php的功能。
ProfilesController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfilesController extends Controller
{
public function show($user_id)
{
$user = User::find(1);
$user_profile = Profile::info($user_id)->first();
return view('profiles.show', compact('profile', 'user'));
}
public function profile()
{
return $this->hasOne('Profile');
}
}
路由/web.php
Route::get('dashboard/profile', 'ProfilesController@show');
配置文件.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
public function user()
{
return $this->belongsTo('User');
}
}
将此添加到User.php
public function profile()
{
return $this->hasOne('Profile');
}
配置文件.blade.php
创建任何你想要的设计。如果你想要拉入用户名,包括{{ Auth::user()->name }}
3条答案
按热度按时间wfveoks01#
试试这个
因为在link中你使用了一个名称路由,但是在web.php中没有名为profiles.show的名称路由。
所以是show error,在路由中你需要传递ID。
eivnm1vs2#
刀片文件:
更改路线样式,如下所示:
在剖面模型
在Profiles.blade.php中
您通过“profile”参数传递了用户信息。因此您必须在blade文件中写入此名称。
注意如果您没有为该路线名称指定任何名称,路线功能将不起作用。您必须使用URL。
pdkcd3nj3#
您的路由是错误的,请查看命名的路由。如果您不使用
Route::resource()
,您必须手动命名您的路由,并指定何时需要参数(在本例中为配置文件ID)。在这种情况下,路由模型绑定可能是可行的方法。
一个二个一个一个