Installing Laravel and defining routes
Tags: laravel, showdev, homestead, tutorial
Published: 2020-07-03 11:34:45

So now, in this second post of building the Laravel website, we will get into actual coding.

We have 2 main tasks:

- Installing Laravel on Homestead
- Creating 3 view routes for our pages

You can use various local environments while doing Laravel coding. But I prefer [Homestead](https://laravel.com/docs/7.x/homestead).

> Laravel Homestead is an official, pre-packaged Vagrant box that provides you a wonderful development environment without requiring you to install PHP, a web server, and any other server software on your local machine.

In this series, we will not cover the Homestead installation process but only use it.

## Installing Laravel

If you didn't start Homestead, run in terminal `homestead up` and your pre-configured virtual machine will start.

For our website, you should configure the *Homestead.yaml* file. We are adding a new sync folder, site, and database.

```
folders:
    - map: ~/vagrant/laravel-catalog
      to: /home/vagrant/laravel-catalog

sites:
    - map: laravel-catalog.test
      to: /home/vagrant/laravel-catalog/public

databases:
    - laravel-catalog
```

After that, for our changes to be applied, you need to run:
`homestead reload --provision`

One more step is needed for the correct work of our local website is adding an entry in your hosts file.

I do it in terminal on my mac machine by editing it with **nano**. Just type `sudo nano /etc/hosts` and add one line:

```
192.168.10.10 laravel-catalog.test
```

And finally, you are ready to install the Laravel framework!

All you need is just go to your project folder and run:
`laravel new`

Now, if you go to http://laravel-catalog.test in your browser you should see the Laravel welcome page. Congratulations!

Let's enter some configuration to our *.env* file.

```
APP_URL=laravel-catalog.test

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33060
DB_DATABASE=laravel-lidings
DB_USERNAME=homestead
DB_PASSWORD=secret
```

I must mention, that it is more correct to enter **APP_URL** without http or https. Only the domain. Some Laravel admin panels need such form of configuration.

## Defining Routes

[Routes in Laravel](https://laravel.com/docs/7.x/routing) are defined in *route/web.php* file.

```
Route::view('/', 'index');
Route::view('/catalog', 'catalog');
Route::view('/product/{code}', 'item');
```

For now, we only use [View Routes](https://laravel.com/docs/7.x/routing#view-routes). Because we don't need any logic except displaying our 3 pages. In future posts, we will change this, of course.

The third route for the item detail page is more complex than others. We capture **{code}** segment in it. When adding logic to this one, we will use this **code** variable to get a specific product and display information about it.

## Views for our Pages

Also, we need 3 views for these routes.

Views are stored in *resources/views* directory. We can delete the default *welcome.blade.php* (we don't need it).

**And create 3 views:**

- index.blade.php
- catalog.blade.php
- item.blade.php

Just put some default text into them.

Views in Laravel use [blade templating engine](https://laravel.com/docs/7.x/blade). We will cover it while moving to our final website.

That's it for the second post in our series. All project code is available on [github](https://github.com/klimsemenov86/laravel-catalog).