【问题标题】:Passing id through an link href in Laravel通过 Laravel 中的链接 href 传递 id
【发布时间】:2017-05-27 21:53:21
【问题描述】:

是否可以通过 Laravel 中的链接 href 传递 id 并显示该页面,如 /projects/display/2。

我有这个链接:

<td><a href="{{ url('projects/display', $projects->id) }}" class="btn btn-info">View</a></td>

当鼠标悬停在链接上时,它会显示 id 为 /projects/display/2。但是每当我点击链接时,我都会收到一条错误消息:

 Sorry, the page you are looking for could not be found.

我有一个名为项目/显示的视图设置,以及路由和控制器。

路线:

<?php


Route::group(['middleware' => ['web']], function (){

    Route::get('/', 'PagesController@getIndex');

    Route::get('/login', 'PagesController@getLogin');

    Auth::routes();

    Route::get('/home', 'HomeController@index');

    Route::get('/projects/display', 'ProjectsController@getDisplay');

    Route::resource('projects', 'ProjectsController');


});

控制器:

<?php

namespace App\Http\Controllers;

use App\project;
use App\Http\Requests;
use Illuminate\Http\Request;
use Session;

class ProjectsController extends Controller
{

    public function index()
    {



    }


    public function create()
    {
        return view('projects.create');
    }



    public function store(Request $request)
    {
        $this->validate($request, array(

            'name' => 'required|max:200',
            'description' => 'required'
        ));

        $project = new project;

        $project->name = $request->name;
        $project->description = $request->description;

        $project->save();

         Session::flash('success', 'The project was successfully created!');

        return redirect()->route('projects.show', $project->id);


    }


    public function show()
    {
        $project = Project::all(); 

        return view('projects.show')->withProject($project);

    }


    public function edit($id)
    {
        //
    }


    public function update(Request $request, $id)
    {
        //
    }

    public function getDisplay($id){


        $project = Project::find($id);

        return view('projects/display')->withProject($project);

    }





}

【问题讨论】:

    标签: php laravel parameters routes


    【解决方案1】:

    您需要将路线更改为:

    Route::get('/projects/display/{id}', 'ProjectsController@getDisplay');
    

    然后生成 URL:

    {{ url('projects/display/'.$projects->id) }}
    

    【讨论】:

    • @steven 请务必在可能的情况下将其标记为已接受,以防其他人可能有同样的问题。
    【解决方案2】:

    您正在寻找的是参数化路线。在此处阅读有关它们的更多信息: https://laravel.com/docs/5.3/routing#required-parameters

    【讨论】:

      【解决方案3】:

      如果你像下面这样写路线,

      Route::get('/projects/display/{projectId}', 'ProjectsController@getDisplay')->name('displayProject');
      

      您可以在 href 中使用名称“displayProject”并将 id 作为数组传递:

      <td><a href="{{ route('displayProject', ['projects' => $projects->id]) }}" class="btn btn-info">View</a></td>
      

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 2020-07-08
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多