2016-03-21 27 views
0

我想,當用戶點擊個人資料頁我想通過Auth::user()->username作爲參數傳遞給我的UserController中的表演method.I有個人資料鏈接如下:通AUTH ::用戶數據變量與途徑

<li><a href="{{URL::to('/profile')}}">Profile</a></li> 

在我的路線,我有以下途徑

Route::get('/profile/{username}',function(){ 
    return View::make('user.show')->with($username); 
}); 

我的問題是我怎麼能在我的'/profile/{username}'Auth::user()->username當我點擊個人資料鏈接?目前的配置文件鏈接不附加任何參數組username與之配對

回答

0

一種快速方法是從/ profile設置重定向,如果他們想查看其他人的個人資料,它不會中斷功能。

Route::get('/profile',function(){ 
    return Redirect::to('/profile/'.Auth::user()->username); 
} 

但是,我建議在重定向之前做一個Auth :: check()。

+0

我沒有一個頁面調用輪廓。我必須把它發送給用戶。顯示頁面 –

+0

我不確定你的意思。我的代碼只會重定向用戶,並最終使用您的問題中的配置文件/用戶名路線。 – Devon

1

的所有 {{URL::to('/profile')}}首先沒有指向Route::get('/profile/{username})網址,有兩種不同的路線

所以你需要做的是要麼改變鏈接,即

{{URL::to('/profile/' . \Auth::user()->username)}} 

,然後在您的路線文件

Route::get('/profile/{username}',function($username){ 
    return View::make('user.show')->with(['username' => $username]); 
}); 

//注意你需要用()方法傳入數組 或當用戶點擊個人資料鏈接,你可以做到這一點

Route::get('/profile/{username}',function($username){ 
    return View::make('user.show',compact('username')); 
}); 
1

<li> 
    <a href="{!! route('user.show', Auth::user()->username) !!}">My Profile</a> 
</li> 

的UserController的@ show方法被調用。

<?php 

// routes.php 

Route::get('profile/{username}', '[email protected]')->name('user.show'); 

// UserController.php 

public function show($username) 
{ 
    $user = User::whereUsername($username)->first(); 

    return view('user.show', compact('user')); 
} 

並將查看響應返回給用戶。

@Update

如果你需要的就是重新定向控制到UserController中@ show方法,你可以這樣做:

<li> 
    <a href="{!! route('user.profile', Auth::user()->username) !!}">My Profile</a> 
</li> 

<?php 

// routes.php 

Route::get('profile/{username}', function ($username) { 
    return redirect()->route('user.show', Auth::id()); 
})->name('user.profile'); 

現在如果你想定製UserController中@ show動作:

<li> 
    <a href="{!! route('user.profile', Auth::user()->username) !!}">My Profile</a> 
</li> 

UserController @ show方法被調用。

<?php 

// routes.php 

Route::resource('user', 'UserController', ['except' => ['show']); 
Route::get('profile/{username}', '[email protected]')->name('user.profile'); 

現在您可以刪除UserController @ show方法,如果您想要或更改要顯示的配置文件方法名稱。

// UserController.php 

public function profile($username) 
{ 
    $user = User::whereUsername($username)->first(); 

    return view('user.show', compact('user')); 
} 
+0

我已經註冊了我的資源控制器 –

+0

我更新了帖子。看看這是你需要的。 – Lucas

0

我不喜歡的東西下面

<li><a href="{{URL::to('/profile')}}">Profile</a></li> 

和route.php:

Route::get('/profile',function(){ 
     return redirect()->route('user.show',[Auth::user()->username]); 

    });