Могу ли я отображать различные части единственного представления на основе URL? - PullRequest
0 голосов
/ 24 декабря 2018

Для простоты представьте, что у меня есть представление, которое содержит 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 голосов
/ 24 декабря 2018

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

0 голосов
/ 24 декабря 2018

Вы можете попробовать этот код.

@if(last(request()->segments()) == 'first')
    <div class='1'></div>
@endif
@if(last(request()->segments()) == 'second')
    <div class='2'></div>
@endif
0 голосов
/ 24 декабря 2018

Вы можете легко проверить это, используя объект запроса и проверяя текущий сегмент.

Например:

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

Это должно дать вам представление.

...