Blade default value laravel 5.2

4

I have the following code

<strong class="primary-font">Complemento</strong>
<p>{{ $produto->complemento or 'Esta produto não tem complemento' }}</p>

I need the system to display the text 'This product has no complement', but this is not working.

    
asked by anonymous 02.08.2016 / 21:15

3 answers

2

If the variable exists but is empty ('') you can do the following:

{{($produto->complemento != '') ? $produto->complemento : 'Este produto não tem complemento'}}

Or:

{{(trim($produto->complemento) != '') ? $produto->complemento : 'Este produto não tem complemento'}}

or is 'translated' by Laravel as:

if(isset($var)) {
    echo $var;
}
...

Now this means that if the $var is declared, even if it is an empty string, it will always echo that $var . We have to do 'manually' (which I know does not exist on this built-in check blade) the condition

    
02.08.2016 / 21:54
0

I believe that the solution presented and marked as accepted will generate a lot of unnecessary code if you want to do this in several lines.

Instead, why not use the ?: of PHP operator? I believe that in addition to improving understanding of the code, you will have less work.

Instead of doing so:

{{ ($produto->complemento != '') ? $produto->complemento : 'Este produto não tem complemento' }}

It's easier to do this:

{{ $produto->complemento ?: 'Este produto não tem complemento' }}

If you need to use trim , you can do so too:

{{ trim($produto->complemento) ?: 'Este produto não tem complemento' }}

See an example, using PHP , in IDEONE

    
10.08.2016 / 14:13
-1

In Laravel 5.0 or higher, {{ }} is not used but {!! !!}

{!! $produto->complemento or 'Esta produto não tem complemento' !!}
    
02.08.2016 / 21:28