Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

sheldonscott's avatar

PagesController pulling up welcome.blade.php

Using Laravel 5.3 and following along with Laracast (https://laracasts.com/series/laravel-5-from-scratch/episodes/4)

In my routes > web.php file:

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------

Route::get('/', 'PagesController@home');

I used php artisan make:controller PagesController

In my app > Http > Controllers > PagesController.php file:

namespace App\Http\Controllers;


class PagesController extends Controller
{
    public function home() 
    {
        $people = ['Charizard', 'Mewtwo', 'Blastoise'];

        return view('welcome', compact('people'));
    }
}

Yet, when I load my site, I am seeing the content from the welcome.blade.php file:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">

        <!-- Styles -->
        <style>
            html, body {
                background-color: #fff;
                color: #636b6f;
                font-family: 'Raleway', sans-serif;
                font-weight: 100;
                height: 100vh;
                margin: 0;
            }

            .full-height {
                height: 100vh;
            }

            .flex-center {
                align-items: center;
                display: flex;
                justify-content: center;
            }

            .position-ref {
                position: relative;
            }

            .top-right {
                position: absolute;
                right: 10px;
                top: 18px;
            }

            .content {
                text-align: center;
            }

            .title {
                font-size: 84px;
            }

            .links > a {
                color: #636b6f;
                padding: 0 25px;
                font-size: 12px;
                font-weight: 600;
                letter-spacing: .1rem;
                text-decoration: none;
                text-transform: uppercase;
            }

            .m-b-md {
                margin-bottom: 30px;
            }
        </style>
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    <a href="{{ url('/login') }}">Login</a>
                    <a href="{{ url('/register') }}">Register</a>
                </div>
            @endif

            <div class="content">
                <div class="title m-b-md">
                    Laravel
                </div>

                <div class="quote">
                    The PHP Framework for Web Artisans
                </div>
            </div>
        </div>
    </body>
</html>

Is there a command or something that I am missing to get web.php to serve up the PagesController.php page instead of welcome.blade.php?

0 likes
4 replies
tomopongrac's avatar

There is no PagesController.php page ... purpose of controller is to return response to your browser which in your case is welcome.blade.php

that is happening with this line of code

return view('welcome', compact('people'));

with code above you return response welcome.blade.php with variable people which you use in your view file

Good start is to read documentation

https://laravel.com/docs/5.3/controllers

sheldonscott's avatar

There is a PagesController.php page - it is located in app > Http > Controllers.

Regardless, the video I mentioned above skipped a step—it shows passing the $people array to the home function, but he does not show using that data in the welcome.blade.php page. Adding something like this to the welcome.blade.php code will clear that up:

@foreach  ($people as $person)
<li>{{ $person }}</li>
@endforeach 

Please or to participate in this conversation.