创建一个包含 blade 语法的函数

Make a function containing blade syntax

我认为 blade。现在,我有 6 个块在我的视图中,因为我不确定如何重构它。

<div class="row filemanager">
<div class="col-sm-12">
  @foreach ($devices as $device)
      @if( $device->vlan_id == 100 AND $device->device_activity == 'ACTIVE' )
        <div class="col-xs-6 col-sm-4 col-md-2 text-center">
          <div class="thmb">
            <div class="btn-group fm-group" style="display: none;">
                <button type="button" class="btn btn-default dropdown-toggle fm-toggle" data-toggle="dropdown">
                  <span class="caret"></span>
                </button>
                <ul class="dropdown-menu fm-menu" role="menu">
                  <li id="device-menu">
                  <a class="changeDeviceNameBtn" href="#"><i class="fa fa-pencil"></i> Change Device Name </a>
                  </li>
                </ul>
            </div>
            <div class="thmb-prev">
              <a href="/{{$cpe_mac}}/device/{{$device->device_mac}}">

              @if(isset($device->device_name))

              {{-- Show base on device name --}}
              <img src="/images/photos/devices/{{img($device->device_name)}}.jpg" class="draggable img-responsive" alt="">

              @else

                  {{-- No Device Name Set --}}
                  @if($device->hostname != '')

                    {{-- Show base on hostname --}}
                    <img src="/images/photos/devices/{{img($device->hostname)}}.jpg" class="draggable img-responsive" alt="">

                  @else

                    {{-- Show default --}}
                    <img src="/images/photos/devices/no-img.jpg" class="draggable img-responsive" alt="">

                  @endif


              @endif

              </a>
            </div>
            <h5 class="fm-title device_name">
              <a href="/{{$cpe_mac}}/device/{{$device->device_mac}}">
              @if($device->hostname == '')
              No Devicename
              @else
              {{ $device->hostname}}
              @endif

              </a>
            </h5>
            <h5 class="text-muted device_ip">{{$device->ip_address}}</h5>
            <h5 class="text-muted device_mac">{{$device->device_mac}}</h5>

              <?php
                  $status = ucfirst(strtolower($device->device_activity));
                  if ($status == 'Active'){
                      $color = '#1CAF9A';
                  }else{
                      $color = '#D9534F';
                  }
              ?>

              <h5>{{ $status }}
                <i class="fa fa-circle" style="color:{{$color}}; margin-left: 7px;"></i>
              </h5>


          </div>
        </div>

        @endif
      @endforeach

</div>
</div>

我想创建一个包含 blade 的函数,并且只替换我的

$device->vlan_id,还有我的 $device->device_activity

例如,

public static deviceRow(100,ACTIVE){

... my blade ... 

}

现在,我只是那个函数 6 次,而不是重复那个代码块 6 次。

这可能吗?

对此有任何提示/建议将不胜感激!

你可以用你的 blade 做一个 partial 并发送一个变量作为参数:

在你的父视图中做这样的事情:

@foreach($somelist as $item)
  @include('view.partial', ['name' => $item->name])
@endforeach

然后在名为 partial.blade.php 的文件中,执行如下操作:

{{ $device->$name }}

这是主要思想。告诉我是否有帮助...

您可以创建一个新视图并发送一些参数,同时包括:

@include('my.view', ['device' => $myDevice, 'activity' => 'ACTIVE'])

数组的键将在您的视图中作为变量使用。

变量 $myDevice 在视图 my.view

中将作为 $device 可用