尝试创建用户个人资料时,我的应用程序遇到了一些麻烦。这是问题所在:
我正在尝试创建一个名为userprofile.blade.php的视图,该视图将输出任何给定的用户配置文件(基于ID或用户名...现在并不重要)。每个个人资料页面将显示名称,描述,位置,个人资料图片以及给定的用户帖子。我使用Laravel的Make:auth命令创建必要的身份验证,自定义身份验证表单,然后迁移数据库中所需的所有列。
我的创建和更新方法可以正常工作(注册新用户并更新其信息)。所有信息都正确保存在数据库中。但是,我只能使用{{Auth :: user()->}}在视图中访问它。每当我尝试在Controller中使用模型访问所需的数据时,它都将不起作用。在我看来,我似乎需要将Laravel的默认“用户”模型与一个自定义模型分开,我将其称为“帐户”或类似名称。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;
use App\Recipe;
class UserController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth', ['except' => [
'index', 'show'
]]);
}
public function index(){
$user = User::find($id);
return view('user.userprofile')->with('user');
}
我只包括了UserController中的index方法,以使其保持简单。它崩溃了,告诉我$ user中的'id'= User :: find($ id);是未定义的变量。那告诉我它没有访问我的数据库表。
我的问题是,我应该创建一个不与身份验证混合使用的新模型来处理所有用户配置文件信息吗?如果是这样,如何从该新模型访问当前数据库表“用户”?
请让我知道是否需要为你们澄清。我不是很有经验,我知道我的问题是否很模糊。非常感谢您的宝贵时间!我非常感谢我能获得的任何帮助!
答案 0 :(得分:0)
您好,欢迎与Laravel合作开发!
您处在正确的轨道上-您需要确定您正在查看的用户个人资料,从数据库中检索它,并将其传递给Blade视图。不过,您不需要新模型或任何东西!只需完成您的开始即可。
您应该首先在路由中定义一个route parameter,这将从URL捕获所需的动态数据。现在让我们使用数字ID。如果您想要一个看起来像example.com/user/439
的URL,则路由应该看起来像Route::get('user/{id}', 'UserController@index');
。
一旦有了,id
参数将被传递到控制器的方法。将其定义为方法参数,即可使用:public function index($id) { ... }
我认为您可以从那里拿走它。 :)