2016-03-01 3 views
0

Я ищу очень общий способ включения компонентов бутстрапа в вид моего блейда. Например, скажем, мне нужно выпадающий на мой взгляд, я должен сделать частичный называется dropdown.blade.php с кодом следующим образом:Рекомендуется ли использовать общие частичные для модалов, выпадающих списков и т. Д. В Laravel Blade?

<div class="dropdown"> 
     <a href="#" class="dropdown-toggle" type="button" data-toggle="dropdown"> 
     <span class="glyphicon glyphicon-chevron-down"></span></a> 
     <ul class="dropdown-menu"> 
     @foreach ($options as $option) 
     <li><a href="{{$option["href"]}}">{{$option["name"]}}</a></li> 
     @endforeach 
     </ul> 
</div> 

и использовать его на мой взгляд, следующим образом:

@include('partials.dropdown', 
      array("options"=>array(
      ["href"=>"#", "name"=>"Profile"], 
      ["href"=>"#", "name"=>"Report"], 
     ))) 

Даже мы можем сделать его более общим, добавив опции для имени кнопки и т. Д. Является ли это хорошим или предпочтительным способом сделать это, или мы должны использовать метод copy-paste с сайта начальной загрузки в наши представления каждый раз? Есть ли какой-либо пакет, который выполняет такую ​​работу? Можем ли мы сделать это более элегантно?

ответ

2

Это кажется хорошей идеей, если вы собираетесь многократно использовать компонент. Я думаю, что более элегантный способ сделать это было бы создать директивы пользовательских лезвий:

https://laravel.com/docs/master/blade#extending-blade

Тогда вы могли бы сделать, например:

@dropdown($options, 'btn-primary') 

Я хотел бы также предоставить аргумент для пользовательского ID элемента или имени, поэтому вы можете ссылаться на него в другом месте на странице по мере необходимости.

Это становится немного более сложным с такими вещами, как модалы. Я думаю, что вы захотите зарегистрировать несколько директив кликов, чтобы вы могли сделать что-то вроде

@startmodal 
@modaltitle('Title') 
@startmodalbody 

    Some body content 

@endmodalbody 
@endmodal