如何在laravel中的单个控制器中传递多条路线

时间:2019-07-13 09:03:05

标签: laravel twitter-bootstrap laravel-blade

我需要在单个控制器中传递多条路线。

我有关于我们的 与我们联系的部分视图都从数据库中检索出来,因此我想通过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``

2 个答案:

答案 0 :(得分:1)

如果我对您的理解正确,那么您希望能够在一个控制器中具有多个路由,那么您必须在控制器中具有多个功能。

Route::get('/whatever', 'ControllerName@functionInController');

function functionInController() {
    //Will be called on /whatever
}

本质上,控制器中的@选择控制器中的哪个功能,这样您就可以与我们联系或联系其他人了。

答案 1 :(得分:0)

将多个路由指向同一控制器不是您正确预期的问题。问题在这里:

public function foot(Request $request, $id)

将此更改为

public function foot($id, Request $request)