在laravel 5.2中处理多个Get / Post方法到同一视图

时间:2017-01-15 16:43:22

标签: laravel laravel-5.2

我基本上有一个包含三列的视图

| Users | User's Profile |            Profile's Data 

第一列列出了所有用户和用户的配置文件类似于用户的子列,其中将显示用户创建的配置文件。单击用户1时,视图中会出现类似这样的内容。然后单击配置文件,相应的配置文件数据应显示在第3列中。

| user 1 | User 1- Profile 1 | User 1- Profile 1's data
| user 2 | User 1- Profile 2 | User 1- Profile 1's data
| user 3 | User 1- Profile 3 | User 1- Profile 1's data

所有这些事情都应该在同一个观点上。我已经在视图中显示了第一批用户。但是,当点击用户(用户1或用户2等)时,不能显示相应用户的简档。我使用GET方法显示第1列(用户)和使用用户ID的GET方法来获取所有配置文件。我不知道如何将所有三组数据(用户,用户配置文件和配置文件的数据)传递到同一视图。这是我尝试过但很困惑如何继续从这一点开始。

这是我的路线

Route::get('/candidates', [
    'uses' => 'candidateController@showClient',
    'middleware' => 'auth']);

Route::get('/candidates/{id}', [
    'uses' => 'candidateController@showProfile',
    'middleware' => 'auth']);

这是我的控制器

public function showClient(){

   $client = new User();
   $client_details = $client
   ->where('role','client')
   ->get();

   return view('admin')->with('client_details',$client_details);

    }

   public function showProfile($id){

   $client = new User();
   $client_details = $client
   ->where('role','client')
   ->get();

   $profile = new Profile();
   $user_profiles = $profile
   ->where('user_id',$id)
   ->get();

   return view('admin')->with('client_details',$client_details)->with('user_profiles',$user_profiles);
    }

第二条路线正常Route::get(/candidates{id},..)。我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

路线档案     

Route::get('/candidates/{id?}', [
    'uses' => 'candidateController@showProfile',
    'middleware' => 'auth'
]);

这里,通过在id参数上添加问号使其成为可选参数。

public function showProfile($id = null) {

    $client_details = User::where('role', 'client')->get();

    if (!is_null($id)) {
        $profile_details = Profile::where('user_id', $id)->get();
    } else {
        $profile_details = [];
    }

    return view('admin', compact('client_details', 'profile_details'));
}

现在,在视图中,检查配置文件详细信息是否为空,如果是,则为 显示所有客户页面,否则显示其个人资料页面。

答案 1 :(得分:0)

路线档案

Route::get('/candidates', [
    'uses' => 'candidateController@showProfile',
    'middleware' => 'auth']);

Route::get('/candidates/{id}', [
    'uses' => 'candidateController@showProfile',
    'middleware' => 'auth']); 

这是控制器

public function showProfile($id = null){

$client = new User();
$client_details = $client
->where('role','client')
->get();

if (!is_null($id)) {
$profile = new Profile();
$user_profiles = $profile
->where('user_id',$id)
->get();
    }
else{
    $user_profiles = [];
    }

return view('admin')->with('client_details',$client_details)->with('user_profiles',$user_profiles);
}