Я пытаюсь придумать чистый код для моего простого приложения Laravel.У меня есть представление (user.blade.php
) для отображения сведений о пользователе:
<div class="name">
<label>Name</label>
<span class="value">{{ $user->name }}</span>
</div>
<div class="address">
<label>Address</label>
<span class="value">
<span class="line1">{{ $user->address_line_1 }}</span>
@if ($user->address_line_2 !== null)
<span class="line2>>{{ $user->address_line_2 }}</span>
@endif
</span>
</div>
<div class="phone">
<label>Phone numbers</label>
<span class="value">
@if ($user->phone_main !== null)
<span class="main">{{ $user->phone_main }}</span>
@endif
@if ($user->phone_alt !== null)
<span class="alt">{{ $user->phone_alt }}</span>
@endif
</span>
</div>
У некоторых пользователей есть только одна адресная строка, у некоторых - две (которые я моделирую, используя два столбца, address_line_1
и address_line_2
,последний может быть обнуляемым), некоторые имеют 0 телефонных номеров, другие имеют 1 или 2 (снова два столбца, phone_main
и phone_alt
, оба из которых могут быть обнуляемыми).
Поскольку я хочу правильно отформатированный адресинформация о линии и номере телефона, я использую директивы blade @if
, чтобы гарантировать, что <span>
s появляются, только если они содержат какую-либо информацию.Лучшие практики (насколько я знаю) диктуют, что представление не должно «делать так много», но я не думаю, что смогу правильно инкапсулировать это поведение в красноречивый атрибут (function getFormattedAddressAttribute
в классе User
)потому что я оборачиваю элементы в теги HTML и не хочу, чтобы моя модель знала о HTML.
У меня вопрос: каково общее руководство для решения этой ситуации?Должен ли я:
- сохранить свое решение?
- вытащить части представления, которые отображают адрес и номера телефонов, в частичные представления и включить их в этот основной вид?
- делать что-то еще?