如何在 laravel 的单个控制器中传递多个路由
Posted
技术标签:
【中文标题】如何在 laravel 的单个控制器中传递多个路由【英文标题】:How to passing multiple routes in single controller in laravel 【发布时间】:2019-11-22 20:30:27 【问题描述】:我需要在单个控制器中传递多个路由。
我有 about us 和 contact us 在部分视图中都从数据库中检索,所以我想通过 footer
访问它们。当您从footer
单击它时,它应该链接到关于我们 或联系我们 页面。
提前感谢您的任何建议,我将不胜感激。
这里是控制器、路由、视图
控制器
class MainController extends Controller
public function index()
$categories = Category:: All();
$footers = Footer::with('subfooters')->get();
return view('combine.combined', compact('categories', 'footers'));
public function foot(Request $request, $id)
$categories = Category:: All();
$footers = Footer::with('subfooters')
->where('id', '=', $id)
->get();
return view('combine.combined', compact('footers', 'categories'));
路线
Route::get('/', 'MainController@foot')->name('pages.index');
Route::get('aboutus/id', 'MainController@foot')->name('combine.combined');
Route::get('contactus/id', 'MainController@foot')->name('combine.combined');
部分页脚视图
@if($subfooter->id == 1)
<a href=" route('combine.combined', ['id' => $subfooter->id])">$subfooter->name</a>
@endif
组合-组合 Vievs
@extends('layouts.master')
@section('header')
@include('partials.header')
@stop
@section('content')
@include('pages.index')
@include('pages.aboutus')
@stop
@section('footer')
@include('partials.footer')
@stop
项目结构
.Root
..Resource
...View
....Combine
.....combined.blade.php
....Pages
.....contactus.blade.php
.....aboutus.blade.php
....Partials
.....footer.blade.php``
【问题讨论】:
【参考方案1】:将多条路由指向同一个控制器并不是您正确预期的问题。问题出在这里:
public function foot(Request $request, $id)
把这个改成
public function foot($id, Request $request)
【讨论】:
【参考方案2】:如果我理解正确,您希望能够在一个控制器中拥有多个路由,为此您必须在控制器中拥有多个功能。
Route::get('/whatever', 'ControllerName@functionInController');
function functionInController()
//Will be called on /whatever
控制器中的 @ 本质上选择控制器中的哪个功能,这样您就可以有一个用于联系我们和了解等。
【讨论】:
我试过 Route::get('aboutus/id', 'MainController@foot');在视图中导致错误函数 App\Http\Controllers\MainController::foot() 的参数太少,通过了 1 个,预期正好有 2 个以上是关于如何在 laravel 的单个控制器中传递多个路由的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 如何通过资源路由将变量传递给控制器?