Значение '0' не отображается в Form :: label - PullRequest
0 голосов
/ 30 октября 2018

Итак, я пытался поставить ноль на этом ярлыке разными способами.

Вот что я пытаюсь сделать.

Эта метка должна содержать значение привязки. Этот якорь определяет, насколько тяжелым он должен быть. (упростить сортировку и прочее.)

Теперь все теги получают значение по умолчанию, равное нулю. Так что это то, что лейбл должен держать. Однако всякий раз, когда я добавляю 0 в качестве значения, вместо этого будет отображаться название метки.

Вот что я попробовал:

{{Form::label($tag->value . '_anchor', '0')}}
{{Form::label($tag->value . '_anchor', 0)}}
{{Form::label($tag->value . '_anchor', "0")}}

даже пытался обмануть его:

{{Form::label($tag->value . '_anchor', function(){
                            return 0;})}}

Это необработанный код в соответствии с запросом:

<div class="form-group">
        @if(count($tags) > 0)
            <div class="col-md-2">
                @foreach($tags as $tag)
                    <div class="tags" style="float: none;">
                        {{Form::label($tag->value, $tag->value)}}
                        {{Form::checkbox($tag->value, $tag->id, false)}}
                        <div>
                            <span class="glyphicon glyphicon-play reverse"></span>
                            {{Form::label($tag->value . '-anchor', 1)}}
                            {{Form::hidden($tag->value . '_anchor', 0)}}
                            </span><span class="glyphicon glyphicon-play"></span>
                        </div>

                    </div>
                @endforeach
            </div>
        @endif

    </div>

Есть идеи, как получить нулевое значение на моем ярлыке? Любое другое число отображается нормально.

Вот картина того, что я получил и чего я ожидаю. Как видно с 1, он работает нормально. enter image description here

Надеюсь, вы, ребята, можете помочь. Если вам нужно больше кода или информации, пожалуйста, спросите.

1 Ответ

0 голосов
/ 30 октября 2018

Laravel запускает имена меток * от 1001 * до formatLabel:

protected function formatLabel($name, $value)
{
    return $value ?: ucwords(str_replace('_', ' ', $name));
}

Поскольку в этой проверке используется нестрогое сравнение (== вместо ===), значение $value, равное нулю, рассматривается как значение false (false-y!) И, следовательно, используется первый параметр вашего вызова метки вместо second .

(Смысл Laravel в том, что вы можете полностью пропустить второй параметр, и он будет просто использовать имя поля, чтобы сделать лучшее предположение о том, что должен сказать ярлык.)

Ваша самая простая ставка здесь - просто вывести <label for="foo_anchor">0</label> raw HTML самостоятельно.

...