【问题标题】:How to place spaces properly in nested dropdown in blade template Laravel如何在刀片模板 Laravel 的嵌套下拉列表中正确放置空格
【发布时间】:2016-02-18 03:30:17
【问题描述】:

我是 laravel 的新手。我最近开始用 Laravel 做一些基本的事情,我真的很喜欢它。我正在尝试创建这样的嵌套下拉列表:

我将从这个下拉列表中选择一个。

我的数组是这样的:

现在我的 VIEW 模板看起来像下面的代码,我使用了递归方法。

<select class="form-control select2me" name="service_id">
        <option value="">Select...</option>
        @foreach($serviceslist as $serviceli)
             @include('services.categorydropdown', array('serviceli'=> $serviceli))
        @endforeach
</select>

另一个模板services.categorydropdown:

<option value="{{$serviceli['id']}}">
    @for ($i = 0; $i <= $serviceli['service_id']; $i++)
        @if($serviceli['service_id'] != 0)
        &nbsp; <!-- ------------I want to add Space as the nested level goes by ------------- -->
        @endif
    @endfor
    {{$serviceli['servicename']}}
</option>

@if(count($serviceli['allChildrenCategory']) > 0)
    @foreach($serviceli['allChildrenCategory'] as $serviceli)
        @include('services.categorydropdown', $serviceli)
    @endforeach
@endif

请建议我如何在数组级别嵌套时创建空间 (&amp;nbsp;)。

谢谢!

感谢您的帮助。在您的建议@nakashu 之后,这就是现在的样子。 在最后一个节点中,我们在某个地方出错了。

【问题讨论】:

  • 在你的 if 条件下,如果你做 &amp;nbsp 会发生什么?它是否给空间?
  • 在这个服务 id 是 parent_id。所以基本上这只是短期级别的临时方法。
  • 但我建议你确实有Form::select 并且有课可以让它很好..
  • 那么,为什么不做 foreach ,而不是让数组被迭代过滤呢?
  • 您能推荐任何示例或代码示例吗?

标签: php laravel laravel-5


【解决方案1】:

这应该解决它:

<select class="form-control select2me" name="service_id">
        <option value="">Select...</option>
        @foreach($serviceslist as $serviceli)
             @include('services.categorydropdown', array('serviceli'=> $serviceli, 'level' => 0))
        @endforeach
</select>

另一个模板 services.categorydropdown:

<option value="{{$serviceli['id']}}">
    @for ($i = 0; $i <= $level; $i++)            
        &nbsp;
    @endfor
    {{$serviceli['servicename']}}
</option>

@if(count($serviceli['allChildrenCategory']) > 0)
    @foreach($serviceli['allChildrenCategory'] as $serviceli)
        @include('services.categorydropdown', array('serviceli'=>$serviceli, 'level' => ($level + 1)))
    @endforeach
@endif

【讨论】:

  • 你可以使用 str_repeat(" ", $level);而是为
  • 我只是使用你提到的方式我想我们只是非常接近。只是数组在某些地方造成了错误。我在底部的问题中再次为您附加图片。
  • 谢谢 .. 你的刀片从来不知道允许什么:) .. 将编辑
  • 我刚刚添加了结果视图。
  • 修复了将关卡迭代移到子循环之外的代码。不知道它是否有效的刀片语法,所以根据需要编辑
【解决方案2】:

我强烈建议您在控制器或模型本身中执行这些过滤器,然后在刀片中进行渲染。

{{ Form::select('service_id', $serviceslist, null, array('class' => 'form-control yourspacing')) }}

并为您的班级编写样式 .yourspacing { //你需要的间距 }

为什么要在控制器中进行过滤?

因为在刀片中彻底做这样的事情从来都不是最佳实践。

我该怎么做?

通过加入表或 array_filter。取决于您的过滤器

提示:始终遵循助手的推荐方法以获得最佳性能。

更新:

当你想做内循环并检查一些条件时。你应该按照 nakashu 的建议做&amp;nbsp;

【讨论】:

  • 是的,因为无论如何,我从来没有在选择中打印数组。我得到的数据是在上面我在数字 2 中提到的图像的表示中。
  • Ahm,,但是我总是不建议在视图中做,我会使用类似this
  • 非常感谢您的帮助。我想你是对的。菜单模块是一个非常好的模块。我仍然必须检查它,它是如何工作的。我是这方面的新手 :) 但你肯定有道理,我不应该这样做。
猜你喜欢
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2015-12-01
  • 2014-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
  • 2021-10-13
相关资源
最近更新 更多