【问题标题】:How to pass parameter to a route如何将参数传递给路由
【发布时间】:2019-04-17 22:36:01
【问题描述】:

所以我对每个“项目”都有这个

@foreach ($projects as $project)
        <tr>
            <td>{{$project->proj_id}}</td>
            <td>{{$project->proj_title}}</td>
            <td>{{$project->proj_desc}}</td>
            <td>{{$client->find($project->client_id)->client_name}}</td>
            <td>{{$project->user->name}}</td>
            <td>{{$project->created_at}}</td>
            @if (Auth::user()->role=='admin')
            <td>
                <div class="dropdown">
                    <button class="btn btn-danger dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action</button>                                                  
                <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
                    <a class="dropdown-item" href="{{route('projects.edit',$project)}}">Edit</a>

                    <form method="POST" action="{{route('projects.destroy',$project)}}" onsubmit="return confirm('Are you sure you want to delete this?')">
                        @method('DELETE')
                        @csrf
                    <button class="dropdown-item" type="submit">Delete</button>
            @endif
    ------------>       <a class="dropdown-item" href="{{route('projects.tasks',$project)}}">tasks</a>

                    </form>
                 </div>
            </div>
            </td>


        </tr>
        @endforeach

我需要帮助的地方是&lt;a class="dropdown-item" href="{{route('projects.tasks',$project)}}"&gt;tasks&lt;/a&gt;

该路由转到我的控制器:

Route::get('/projects/tasks', ['as' => 'projects.tasks', 'uses' => 'ProjectController@seeTasks']);

我需要将我单击的项目的 ID 传递给该控制器,以便显示与其链接的所有任务。我已经完成了所有的关系,我只需要这部分的帮助。 我不知道我需要做什么才能做到这一点。

这是我现在在控制器中拥有的功能:

public function seeTasks(Project $project){
    return $project;

}

它返回一个空数组[]

提前致谢

【问题讨论】:

标签: php laravel


【解决方案1】:

为了做到这一点,您需要使用路由模型投标。所以你的路线定义将是

Route::get('/projects/{project}/tasks', ['as' => 'projects.tasks', 'uses' => 'ProjectController@seeTasks']);

Laravel 会自动获取你传递给路由的项目,如果模型不存在则抛出异常。

【讨论】:

  • 非常感谢,这是我的解决方案。
  • 请考虑将其标记为您问题的答案。
  • 为了完成 Francinaldo Almeida 所说的,这里是 Laravel 路由参数的 documentation
猜你喜欢
  • 1970-01-01
  • 2016-09-21
  • 2018-06-20
  • 2020-08-09
  • 1970-01-01
  • 2023-03-20
  • 2016-07-01
  • 1970-01-01
  • 2019-03-03
相关资源
最近更新 更多