Aryabh
Aryabh

Reputation: 77

Php code in laravel blade php

I m trying to add <?php echo $_GET["tname"] ?> in my laravel login form to use it as this https://example.com/?tname=test to get it auto-filled value, but when ever i try to add it it says

Whoops, looks like something went wrong.

Can anyone tell me how to use that code in it.
Here's my laravel login page code:

<form class="" role="form" method="POST" action="{{ url('/login') }}">
    <div class="panel panel-body">
        <h4 class="text-semibold mt-0">{{ trans('messages.login') }}</h4>

        <div class="form-group has-feedback has-feedback-left{{ $errors->has('email') ? ' has-error' : '' }}">
            <input id="email" type="email" class="form-control" name="email" placeholder="{{ trans("messages.email") }}"
                 value="<?php echo $_GET["tname"]; ?>"
            >

Upvotes: 1

Views: 4731

Answers (3)

Tpojka
Tpojka

Reputation: 7111

If you want to use PHP code block explicitly, you can use it within blade tags @php /some regular PHP code/ @endphp and in your case it could be:

<form class="" role="form" method="POST" action="{{ url('/login') }}">
    <div class="panel panel-body">
        <h4 class="text-semibold mt-0">{{ trans('messages.login') }}</h4>

        @php
            $a = 5;
            $b = ['a', 'b', 'c'];
            $c = isset($_GET['tname']) ? $_GET['tname'] : null;
        @endphp
        <div class="form-group has-feedback has-feedback-left{{ $errors->has('email') ? ' has-error' : '' }}">
            <input id="email" type="email" class="form-control" name="email" placeholder="{{ trans("messages.email") }}"
             value="{{ $c }}">

Of course, using GET variable without PHP input sanitation wouldn't be much smart and that's why @MarcinNabiałek and @AlexeyMazenin answers are correct. I am here just pointing of how would you use PHP block code in blade regarding question title.

Upvotes: 0

Alexey Mezenin
Alexey Mezenin

Reputation: 163748

You can just use the request() helper to get URI parameter:

value="{{ request('tname') }}"

Upvotes: -1

Marcin Nabiałek
Marcin Nabiałek

Reputation: 111829

Instead of:

<?php echo $_GET["tname"]; ?>

just use:

{{ request()->input('tname') }}

You should not use PHP code in Blade even you can use @php ... @endphp directives

Upvotes: 2

Related Questions