簡體   English   中英

通過 Laravel 中的鏈接 href 傳遞 id

[英]Passing id through an link href in Laravel

是否可以通過 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.

我有一個名為項目/顯示的視圖設置,加上路由和 controller。

路線:

<?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');


});

Controller:

<?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);

    }





}

您需要將路線更改為:

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

然后生成URL:

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

如果你寫下面的路線,

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

您可以在href中使用名稱'displayProject'並將id作為Array傳遞:

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

您正在尋找的是參數化路線。 在這里閱讀更多相關信息: https//laravel.com/docs/5.3/routing#required-parameters

我找到了一個更好的解決方案:在你的刀片文件中這樣做

<a href="{{route('displayProject',"$id")}}">
  View
</a>

使用這條路線,在路線文件中

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

$id 是從你的 controller 發送的

return view('viewPage', compact('id'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM