Рефакторинг, чтобы показать ссылку или нет в лезвии

Я чувствовал, что этот код выглядит немного грязно, логика состоит в том, чтобы показать ссылку <a href или иначе показывать только текст.

Как я могу реорганизовать это, чтобы выглядеть чище и ремонтопригоднее?

   <ol class="breadcrumb">
<li class="{{ $active == 'sign_in'? 'active':'' }}">
@if($active != 'sign_in')
@php($showLink = true)
@else
@php($showLink = false)
@endif

@if($showLink)
<a href="{{ url_secure('sign_in') }}">
@endif
Sign In
@if($showLink)
</a>
@endif
</li>
<li class="{{ $active == 'article'? 'active':'' }}">
@if($active != 'article' && $showLink)
@php($showLink= true)
@else
@php($showLink= false)
@endif

@if($showLink)
<a href="{{ url_secure('article')}}">
@endif
Articles
@if($showLink)</a>@endif
</li>

<li> </li> //repeat the code logic like above
</ol>

Было бы хорошо, если есть способ уменьшить условия и использовать цикл.

0

Решение

Почему не просто

<li class="{{ $active == 'sign_in'? 'active':'' }}">
@if ($active != 'sign_in')
<a href="{{ url_secure('sign_in') }}">Sign In</a>
@else
Sign In
@endif
</li>

Также неясно, почему вы проверяете $showLink это было установлено ранее.

Хорошо, так как я прочитал ваши комментарии, я немного изменил шаблон с помощью foreach цикл:

@php
// some initial variables
$allowed_to_click = true;
// this is a link to selected page
$selected_link = 'something';
@endphp
@foreach ($links as $link)
@php
// check if this link is ACTIVE
$active = $link == $selected_link;
// check if we can CLICK this link
$allowed_to_click = $active || $allowed_to_click;
@endphp

<li class="{{ $active ? 'active':'' }}">
@if ($allowed_to_click)
<a href="{{ url_secure('some_url')}}">Some Caption</a>
@else
Some Caption
@endif
</li>

@php
// if link is ACTIVE - following links are unclickable
if ($active) {
$allowed_to_click = false;
}
@endphp
@endforeach
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector