【问题标题】:How to pass value in URL in Laravel如何在 Laravel 中的 URL 中传递值
【发布时间】:2020-04-28 10:24:50
【问题描述】:

我想点击“查看详情”按钮并转到另一个页面“/viewdeail/id=2”,这里的 id=2 来自点击查看详情按钮。到目前为止,我准备了这个 sn-p。

控制器:

public function schooldetailviewid($school_id)
     {
        return view('viewdeail/school_id={$school_id}', compact('school_id'));
     }

路线

Route::get('/viewdeail/school_id={school_id}', 'ViewController@schooldetailviewid')->name('schooldetail');

我很困惑如何解决这个问题。

【问题讨论】:

  • /viewdetail/{school_id} 玩弄school_id,和return view('schooldetail')->with(['school_id'=>$school_id]);

标签: laravel routes getmethod


【解决方案1】:

如果你以这种方式传递参数/viewdeail?id=2

然后在您的控制器中,您需要使用Request 对象来获取它:

public function schooldetailviewid(Request $request)
{ 

    $school_id = $request->get('id');

    return view("viewdeatil/school_id=$school_id", compact('school_id'));
}

请查看 Laravel 路由文档:https://laravel.com/docs/5.8/routing#route-parameters

【讨论】:

  • 这样获取需要uri?id=2,不是吗?
  • 是的,这就是你传递参数的方式
【解决方案2】:

使用 Laravel,如果您需要在路由中传递所需的参数,您需要将其指定到您的 routes/web.php 文件中,并从您的控制器操作中获取。

这是执行此操作的常用方法:

// routes/web.php

Route::get('/viewdeail/{schoolId}', 'ViewController@details')->name('schooldetail');
// app/Http/Controllers/ViewController.php

class ViewController extends Controller {

    ...

    public function details($schoolId) {
        // your view located in ressources/views folder
        return view('viewdeail/', compact('schoolId'));
    }

}

现在,如果您只想获取 domain.tld/viewdeail?schoolId=3 之类的参数,则需要在 routes/web.php 文件中先前定义的路由中删除 {schoolId},然后编辑您的控制器并像这样继续:

// app/Http/Controllers/ViewController.php

use Illuminate\Http\Request; // we need the Request class, so import it

class ViewController extends Controller {

    ...

    public function details(Request $request) {
        $schoolId = $request->query('schoolId');

        // your view located in ressources/views folder
        return view('viewdeail/', compact('schoolId'));
    }

}

【讨论】:

    【解决方案3】:

    您可以通过多种方式实现这一目标。

    你可以的,

    $school_id = $request->get('id');

    $school_id = YourModel::find('$id');

    你可以使用 Request 来获取你的数据

    控制器

    public function schooldetailviewid(Request $request)
    { 
    
    $school_id = $request->get('id');
    
    return view("viewdeatil/school_id/$school_id", compact('school_id'));
    }
    

    路线

    你的路线应该是这样的;

    Route::get('/viewdeail/school_id/{school_id}', 'ViewController@schooldetailviewid')->name('schooldetail');
    

    刀片 你的 a 标签应该是这样的;

    <a href="{{route('schooldetail', $school_id->id)}}">getDetails</a>
    

    【讨论】:

      【解决方案4】:
       Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){
      
          Route::resource('category','CategoryController');
      
      }); 
      
      public function index()
          {
              $categories = Category::latest()->get();
              return view('admin.category.index',compact('categories'));
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        • 2014-05-12
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多