0

I am trying to run javascript functions in an if statemenet with laravel but I receive the following error when trying to do so:

Parse error: syntax error, unexpected ':', expecting '(' (View: C:\rcms_w\resources\views\frontend\home.blade.php)

Code:

<script type="text/javascript">
    @if (Auth::user()->roleplay->health_points >= 100) 
        setHealth(1);
    @elseif
        setHealth(0.{{ Auth::user()->roleplay->health_points }});
    @endif

    @if (Auth::user()->roleplay->energy_points >= 100) 
        setEnergy(1, {{ Auth::user()->roleplay->energy_points }});
    @elseif
        setEnergy(0.{{ Auth::user()->roleplay->energy_points }}, {{ Auth::user()->roleplay->energy_points }});
    @endif

    @if (Auth::user()->roleplay->hygiene_points >= 100) 
        setHygiene(1, {{ Auth::user()->roleplay->hygiene_points }});
    @elseif
        setHygiene(0.{{ Auth::user()->roleplay->hygiene_points }}, {{ Auth::user()->roleplay->hygiene_points }});
    @endif

    @if (Auth::user()->roleplay->hunger_points >= 100) 
        setHunger(1, {{ Auth::user()->roleplay->hunger_points }});
    @elseif
        setHunger(0.{{ Auth::user()->roleplay->hunger_points }}, {{ Auth::user()->roleplay->hunger_points }});
    @endif
    </script>
  • Error at which line no? – Vaibhavraj Roham Mar 27 '17 at 18:55
  • Possible duplicate of [PHP Parse/Syntax Errors; and How to solve them?](http://stackoverflow.com/questions/18050071/php-parse-syntax-errors-and-how-to-solve-them) – aynber Mar 27 '17 at 19:04
  • Your error is not in this code. Is this your home.blade.php? – aynber Mar 27 '17 at 19:05
  • @aynber yes it is, the page loads perfectly fine when removing this code. The error is on line `setHealth(0.{{ Auth::user()->roleplay->health_points }});` –  Mar 27 '17 at 19:10
  • If you take that line out, does the rest work? Interesting that that particular line throws the error when the line above it does not. You may want to check your User and Roleplay models for errors. – aynber Mar 27 '17 at 19:21

1 Answers1

1

You use this structure:

@if (Auth::user()->roleplay->health_points >= 100) 
    setHealth(1);
@elseif
    setHealth(0.{{ Auth::user()->roleplay->health_points }});
@endif

which get parsed to

<?php if (Auth::user()->roleplay->health_points >= 100) : ?>
    setHealth(1);
<?php elseif: ?>
    setHealth(0.{{ Auth::user()->roleplay->health_points }});
<?php endif; ?>

The elseif part requires another statement (comparing something or expecting a boolean).

If you change the @elseif to @else, it should work.

Your new script will be this:

<script type="text/javascript">
    @if (Auth::user()->roleplay->health_points >= 100) 
        setHealth(1);
    @else
        setHealth(0.{{ Auth::user()->roleplay->health_points }});
    @endif

    @if (Auth::user()->roleplay->energy_points >= 100) 
        setEnergy(1, {{ Auth::user()->roleplay->energy_points }});
    @else
        setEnergy(0.{{ Auth::user()->roleplay->energy_points }}, {{ Auth::user()->roleplay->energy_points }});
    @endif

    @if (Auth::user()->roleplay->hygiene_points >= 100) 
        setHygiene(1, {{ Auth::user()->roleplay->hygiene_points }});
    @else
        setHygiene(0.{{ Auth::user()->roleplay->hygiene_points }}, {{ Auth::user()->roleplay->hygiene_points }});
    @endif

    @if (Auth::user()->roleplay->hunger_points >= 100) 
        setHunger(1, {{ Auth::user()->roleplay->hunger_points }});
    @else
        setHunger(0.{{ Auth::user()->roleplay->hunger_points }}, {{ Auth::user()->roleplay->hunger_points }});
    @endif
</script>
Douwe de Haan
  • 6,247
  • 1
  • 30
  • 45