是否可以基于URL显示单视图的不同部分?

时间:2018-12-24 11:21:38

标签: php laravel laravel-5 laravel-blade

为简单起见,假设我有一个包含ul和4 div的视图

<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='1'></div>

<div class='2'></div>

<div class='3'></div>

<div class='4'></div>

是否可以做到这一点,以便用户根据URL只能看到四个div之一?例如:

在URL www.example.com/first上,用户收到一个包含以下内容的视图:

<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='1'></div>

在URL www.example.com/second上,用户收到一个包含以下内容的视图:

<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='2'></div>

在URL www.example.com/third上,用户收到一个包含以下内容的视图:

<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='3'></div>

如果我有4个不同的视图,我可以轻松地做到这一点,但是我的目标是将所有代码放在1个视图中,然后基于URL呈现正确的部分。

3 个答案:

答案 0 :(得分:1)

您可以轻松地使用请求对象进行检查,并检查当前句段。

例如:

@if(request()->is('first'))
    <div class="1"></div>
@elseif(request()->is('second'))
    <div class="2"></div>
@endif

这应该给你这个主意。

答案 1 :(得分:0)

4个不同的视图将是一个好主意,每个视图可以具有不同的html,如果您使用Blade,否则html代码将很混乱。使1个主刀片在其中添加您的ul代码

master.blade.php

<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>
 @yeild('content')

使用此主版式扩展每个视图。

first.blade.php

@extends('master')
@section('content')
<div class='1'></div>
@endsection

以此类推

如果所有请求都将转到同一控制器方法,而不是像这样调用它们

return view($slug);

这是laravel刀片模板的美

答案 2 :(得分:0)

您可以尝试使用此代码。

@if(last(request()->segments()) == 'first')
    <div class='1'></div>
@endif
@if(last(request()->segments()) == 'second')
    <div class='2'></div>
@endif