Php 我可以基于URL显示单个视图的不同部分吗?

Php 我可以基于URL显示单个视图的不同部分吗?,php,laravel,laravel-5,laravel-blade,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'><

为了简单起见,假设我有一个包含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中的一个?例如:

@if(request()->is('first'))
    <div class="1"></div>
@elseif(request()->is('second'))
    <div class="2"></div>
@endif
在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>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='2'></div>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='3'></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='1'></div>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='2'></div>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='3'></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='1'></div>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='2'></div>
<ul>
    <li>Section 1</li>
    <li>Section 2</li>
    <li>Section 3</li>
    <li>Section 3</li>
<ul>

<div class='3'></div>
  • 第一节
  • 第二节
  • 第三节
  • 第三节

如果我有4个不同的视图,我可以很容易地做到这一点,但我的目标是将所有代码放在一个视图中,然后根据URL显示正确的部分。

您可以使用请求对象轻松地检查这一点,并检查当前段

例如:

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

这应该给你一个想法。

4个不同的视图将是一个好主意,每个视图可以有不同的html,如果你使用刀片,否则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')
@extends('master')
@section('content')
<div class='1'></div>
@endsection
这就是laravel刀片模板的美妙之处

您可以试试这段代码

@if(last(request()->segments()) == 'first')
    <div class='1'></div>
@endif
@if(last(request()->segments()) == 'second')
    <div class='2'></div>
@endif
@if(last(request()->segments())=“first”)
@恩迪夫
@如果(最后一个(请求()->segments())=='second')
@恩迪夫

有点与您的问题无关,但也可以使用javascript和HTML5历史API查看此页面上的HTML(注意,页面刷新会将您带到相同的内容),如果第一、第二、第三个是/admin/{slug?}的slug,例如:Route::get('/admin/{slug?}','pagesController@admin')->name('admin');它会的,但是你必须知道slug的名称并按原样使用它,如果slug是动态的,它就没有什么用处了,而且很快就会变得一团糟。那么最好对每个页面使用视图。