Laravel blade функции, макросы...

WMix

герр M:)ller
Партнер клуба
как красиво такое написать
PHP:
@extends('layout')
<?php
    function tree( $tree, $selected_node ){
        if($tree){
            $out = '<ul>';
            foreach($tree as $node){
                $out .= '<li id="node-'.$node->id.'" class="'.(
                    $node->rgt-$node->lft > 1 ? ' folder': ''
                ).(
                    $node->id == $selected_node ? ' active' : ''
                ).'">'.$node->name . tree( $node->children, $selected_node ) . '</li>';
            }
            $out .= '</ul>';
            return $out;
        }
    }
?>

@section('side-menu')
    <div id="tree">
        {{tree($tree, $selected_node)}}
    </div>
@stop
в данном случае не релевантно какая функция (но возвращающая html, типа view-helper), интересней сам подход
те, хочется многоразового использования, и избавиться от <?php в шаблоне
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
Вот у меня из всего ларавеля только блейд и не прижился. Даже елоквент в некоторые проекты ушел без ларавеля, а вот блейд как-то уныл. (
 

Absinthe

жожо
Вот у меня из всего ларавеля только блейд и не прижился. Даже елоквент в некоторые проекты ушел без ларавеля, а вот блейд как-то уныл. (
А мне он понравился - лучшая реализация PHP в роли шаблонизатора. Именно в таком ключе его и стоит рассматривать.
 

WMix

герр M:)ller
Партнер клуба
Absinthe, а всякие автокомплиты и другие элементы формы требующие inline js, а возможно и дополнительный js файл, как пишешь?
 

WMix

герр M:)ller
Партнер клуба
я поначалу так написал,
PHP:
<script type="text/javascript">// <![CDATA[
        $(function() {
            @yield('js')
        });
    // ]]></script>
PHP:
@section('js')
    $( "#group" ).autocomplete({
        source: {{json_encode(array_fetch($groups->toArray(),'group'))}}
    });
@stop
@section('content')
  <div class="form-group">
        {{ Form::label('group', 'Group') }}
        {{ Form::text('group', Input::old('group'), array('class' => 'form-control')) }}
  </div>
@stop
но так js уже не парсится на IDE, хуже того, придеться эту вставку на каждый автокомплит рисовать.

а если взять первый вопрос, то там нужно помимо вызова
{{TreeHelper::htmlList($tree, $selected_node)}}
в хидер или футер добавить эту хрень
HTML:
<script type="text/javascript" src="/libs/jquery-plugins/dynatree/jquery.dynatree.min.js"></script>

    <script type="text/javascript">// <![CDATA[
        $(function() {
            $("#tree").dynatree({
                onActivate: function(node) {
                    alert("You activated " + node);
                }
            });
        });
    // ]]></script>
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
сообразил,
PHP:
@section('head')
{{ HTML::script('js/default.js')}}
{{ HTML::link('css/default.css')}}
@stop

@section('js')
{{ JS::autocomplete("#group", [source: json_encode(array_fetch($groups->toArray(),'group'))])}}
@stop

@section('content')
<div class="form-group">
{{ Form::label('group', 'Group') }}
{{ Form::text('group', Input::old('group'), array('class' => 'form-control')) }}
</div>
@stop
вариант ), конечно хотелось просто
Код:
{{ Form::autocomplete('group', Input:old('group'), [source => json_encode(array_fetch($groups->toArray(),'group')), 'class' => 'form-control']) }}
ну да ладно
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
это вроде, когда валидацию форма не прошла, предыдущее значение из почты. или я не допонял?
 

Absinthe

жожо
null в этом месте будет то же самое значить :)
По крайней мере в пятерке так.
 
Сверху