通过Laravel中的链接href传递id并在另一个视图中设置值

时间:2017-10-18 01:05:17

标签: php laravel blade

我想从listProjectsView传递项目ID(列表中的pid)并显示在detailedView页面中。但是找不到详细的View页面和listProjects的未定义变量的错误消息页面。有人可以帮助我吗

这是我的listProjects.blade.php文件

@foreach($data as $row)
<div class="panel panel-default event">
<div class="panel-body">
<div class="rsvp col-xs-2 col-sm-2">
  <div class="profile-image">
        <img src="http://api.randomuser.me/portraits/med/men/71.jpg"/>
    </div>
  <div class="hidden-xs">
    <span class="fa fa-thumbs-up fa-2x"></span>
    <span class="fa fa-thumbs-down fa-2x"></span>
  </div>
</div>
<div class="info col-xs-9 col-sm-8">
  {{$row->ptitle}}
 <div>
  {{$row->pdescription}}
</div>
    <div class="profile hidden-xs">
        Project Start date - {{$row->psdate}}

    </div>
    <div class="links hidden-sm">
       <a href="{{ url('projects/detailedProject/'. $projects->pid )}}"><i class="glyphicon glyphicon-chevron-right col-xs-3"></i></a>
   </div> 
</div>
<div class="author col-xs-1 col-sm-2">
    <div class="profile-image">
        <img src="http://api.randomuser.me/portraits/med/men/71.jpg"/>
    </div>
    <div class="profile hidden-xs">
        <li>Project Start date <br> {{$row->psdate}}</li>
    </div>

</div>
</div>
</div>  
@endforeach

这是我的detailevView.blade.php文件

@foreach($data as $row)   
<ul>
<h2>Project Details</h2>
<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project Title </label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->ptitle}}</label>
</div>
</div>  

<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project Description</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->pdescription}}</label>
</div>
</div>  

<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project Duration</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->pduration}}</label>
</div>
</div> 

<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project Start Date</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->psdate}}</label>
</div>
</div> 

<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project End Date</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->pedate}}</label>
</div>
</div> 

<div class="row">
<div class="col-lg-3 col-md-3 col-sm-3">
<label>Project Category</label>
</div>
<div class="col-lg-9 col-md-9 col-sm-9">
<label> {{$row->pcategory}} </label>
</div>
</div> 
</ul>
@endforeach

我的ProjectController

class ProjectController extends Controller
{
public function getCreateProject()
{
    return view ('projects.createProject');
}

public function postCreateProject(Request $request)
{
    $this->validate($request, [
        'ptitle' => 'required|max:200',
        'pdescription' => 'required',
        'etitle' => 'required|max:200',
        'edetails' => 'required',
        'dtotal' => 'required',
        'oposition' => 'required|max:100',
        'odescription' => 'required',
    ]);


    $project = Project::create( $request->only(['ptitle', 'pdescription', 'pduration', 'psdate', 'pedate', 'pcategory', 'pimage']));


    $project->events()->create($request->only(['etitle', 'edetails', 'edate', 'etime', 'elocation', 'eimage']));


    $project->donations()->create($request->only(['dtotal', 'dinhand', 'dbankaccount']));


    $project->opportunities()->create($request->only(['oposition', 'odescription', 'olocation', 'odeadline']));


    return redirect()
        ->route('home', $project->pid)
        ->with('info', 'Your project has been created.');
}


public function getListProjects()
{
    $data=Project::all();
    return view('projects.listProjects')->withProject($data);
}

public function postListProjects()
{
    dd('Hi there');
}

public function getDetailedProject()
{
    $data = Project::find($id);
    return view('projects/detailedView')->withProject($data);
}
}

路线档案

/* List all the projects */
Route::get('/listProjects', [
'uses'=> '\Ngovol\Http\Controllers\ProjectController@getListProjects',
'as' => 'projects.listProjects', 
]);

Route::get('/projects/detailedProject/{pid}', 'ProjectController@getDetailedProject');

1 个答案:

答案 0 :(得分:0)

您似乎需要将$projects->pid更改为$row->pid

<a href="{{ url('projects/detailedProject/'. $row->pid )}}"><i class="glyphicon glyphicon-chevron-right col-xs-3"></i></a>

您可能还想考虑使用命名路由和route()方法。

Route::get('projects/detailedProject/{pid}', 'ProjectController@getDetailedProject')->name('project.detailed');

<a href="{{ route('project.detailed', [$row->pid]) }}"><i class="glyphicon glyphicon-chevron-right col-xs-3"></i></a>