改进 blade 模板的更好方法?
A better way to improve blade template?
客户可以选择两种套餐:Phone套餐或宽带和Phone套餐。
当用户准备下订单时,它会显示包含包裹名称信息和费用的摘要视图。如果 select Phone 套餐或 Broadband & Phone 套餐
,一些摘要信息不需要显示
有没有更好的方法来提高可读性和可维护性?例如
order-sidebar.blade.php
注意:这是代码块的小示例。在实际应用中它相当大,有很多 if
语句 broadbandphone
或 phone
@if ($summary['service'] == "phone" || $summary['service'] == "broadbandphone")
<div class="x5">
<h4>Phone Line x <span class="summary-lines">{{$summary['lines']}}</span></h4>
<ul class="clearfix">
@if ($summary['service'] == "phone")
<li>
<p class="x5-details">
@if ($summary['line_type'] == "newline")
New Line(s)
@endif
@if ($summary['line_type'] == "switch")
Switch line(s)
@endif
</p>
</li>
@endif
@if ($summary['service'] == "phone" && $summary['lines'] > 1)
<li>
<p class="x5-details">{{$summary['linesWithMulitpleNumbers']}}</p>
</li>
@endif
<li>
<p class="x5-details">{{$summary['package']->name}}</p>
<p class="x5-price">£{{$summary['monthlyLinesCost']}}</p>
</li>
</ul>
</div>
@endif
或者我应该为摘要视图创建两个单独的文件,例如 order-sidebar-phone.blade.php
和 order-sidebar-broadbandphone.blade.php
所以它会是这样的:
@if ($summary['service'] == "phone")
@include('sections.order-sidebar-phone')
@end
@if ($summary['service'] == "broadbandphone")
@include('sections.order-sidebar-broadbandphone')
@end
我觉得你的代码没问题。但是,这里有一些提示可能有助于减少 if 或使您的代码更具可读性。
Shorthand三元if
有时 shorthand if 看起来更干净,更易读:
@if($summary['service'] == "phone")
Foo
@else
Bar
@endif
可以写成:
{{ ($summary['service'] == "phone" ? "Foo" : "Bar") }}
对于根据条件变化的小段文本特别有用。
缩进
我什至不需要这么说。正确缩进你的代码(不是说你没有在你的问题中......)你的 if 语句将不那么混乱;)
部分
虽然可以按照您的建议将其完全拆分,但这会导致大量重复代码...
但是你也可以拆分你的文件,这样它们就不会那么大,也不包含那么多 if 语句(即使总数仍然相同,但结构更好,更清晰)
例如代替:
{{-- ... --}
</div>
@if ($summary['newSetup'] == false)
<div class="installation">
<h4>Phone Line x <span class="summary-lines">{{$summary['lines']}}</span></h4>
<ul class="clearfix">
<li>
<p class="installation-details">Installation</p>
<p class="installation-price">£{{$summary['installationCharge']}}</p>
</li>
</ul>
</div>
@endif
<div class="off-costs bg-gray">
<div class="off-costs-header clearfix">
{{-- ... --}}
将 installation
部分放入它自己的文件中并包含它:
{{-- ... --}
</div>
@if ($summary['newSetup'] == false)
@include('installation')
@endif
<div class="off-costs bg-gray">
<div class="off-costs-header clearfix">
{{-- ... --}}
客户可以选择两种套餐:Phone套餐或宽带和Phone套餐。
当用户准备下订单时,它会显示包含包裹名称信息和费用的摘要视图。如果 select Phone 套餐或 Broadband & Phone 套餐
,一些摘要信息不需要显示有没有更好的方法来提高可读性和可维护性?例如
order-sidebar.blade.php
注意:这是代码块的小示例。在实际应用中它相当大,有很多 if
语句 broadbandphone
或 phone
@if ($summary['service'] == "phone" || $summary['service'] == "broadbandphone")
<div class="x5">
<h4>Phone Line x <span class="summary-lines">{{$summary['lines']}}</span></h4>
<ul class="clearfix">
@if ($summary['service'] == "phone")
<li>
<p class="x5-details">
@if ($summary['line_type'] == "newline")
New Line(s)
@endif
@if ($summary['line_type'] == "switch")
Switch line(s)
@endif
</p>
</li>
@endif
@if ($summary['service'] == "phone" && $summary['lines'] > 1)
<li>
<p class="x5-details">{{$summary['linesWithMulitpleNumbers']}}</p>
</li>
@endif
<li>
<p class="x5-details">{{$summary['package']->name}}</p>
<p class="x5-price">£{{$summary['monthlyLinesCost']}}</p>
</li>
</ul>
</div>
@endif
或者我应该为摘要视图创建两个单独的文件,例如 order-sidebar-phone.blade.php
和 order-sidebar-broadbandphone.blade.php
所以它会是这样的:
@if ($summary['service'] == "phone")
@include('sections.order-sidebar-phone')
@end
@if ($summary['service'] == "broadbandphone")
@include('sections.order-sidebar-broadbandphone')
@end
我觉得你的代码没问题。但是,这里有一些提示可能有助于减少 if 或使您的代码更具可读性。
Shorthand三元if
有时 shorthand if 看起来更干净,更易读:
@if($summary['service'] == "phone")
Foo
@else
Bar
@endif
可以写成:
{{ ($summary['service'] == "phone" ? "Foo" : "Bar") }}
对于根据条件变化的小段文本特别有用。
缩进
我什至不需要这么说。正确缩进你的代码(不是说你没有在你的问题中......)你的 if 语句将不那么混乱;)
部分
虽然可以按照您的建议将其完全拆分,但这会导致大量重复代码...
但是你也可以拆分你的文件,这样它们就不会那么大,也不包含那么多 if 语句(即使总数仍然相同,但结构更好,更清晰)
例如代替:
{{-- ... --}
</div>
@if ($summary['newSetup'] == false)
<div class="installation">
<h4>Phone Line x <span class="summary-lines">{{$summary['lines']}}</span></h4>
<ul class="clearfix">
<li>
<p class="installation-details">Installation</p>
<p class="installation-price">£{{$summary['installationCharge']}}</p>
</li>
</ul>
</div>
@endif
<div class="off-costs bg-gray">
<div class="off-costs-header clearfix">
{{-- ... --}}
将 installation
部分放入它自己的文件中并包含它:
{{-- ... --}
</div>
@if ($summary['newSetup'] == false)
@include('installation')
@endif
<div class="off-costs bg-gray">
<div class="off-costs-header clearfix">
{{-- ... --}}