Вывести страницы из базы данных

Сначала надо настроить подключение к базе данных в файле .env.

Затем запустить команду ниже, которая создаст файл app/News.php, через которую можно будет делать запросы в базу данных.

php artisan make:model News -m

Параметр -m означает, что надо создать миграцию (SQL-код) для создания таблицы news. Запустить выполнение SQL-кода можно через следующую команду:

php artisan migrate

В результате в базе данных будет создана таблица news.

Вывод страниц

Надо запустить команду ниже, которая создаст файл app/Http/Controllers/NewsController.php.

php artisan make:controller NewsController --model=News

Параметр --model подключает файл модели, через которую происходит запросы в базу данных.

В созданном файле в двух методах надо добавить код выборки страниц.

# app/Http/Controllers/NewsController.php

class NewsController extends Controller
{

    // страница «news/»
    public function index()
    {
        return view('news.index', ['news' => News::all()]);
    }

    // страница «news/show/2»
    public function show($id)
    {
        return view('news.show', ['news' => News::findOrFail($id)]);
    }
}

В файле routes/web.php надо указать страницы, на которых будет выполняться код выше.

# routes/web.php (Laravel 8)
use App\Http\Controllers\NewsController;

Route::get('news/',     [NewsController::class, 'index']);
Route::get('news/{id}', [NewsController::class, 'show']);

# routes/web.php (Laravel 7)
Route::get('news/',     'NewsController@index');
Route::get('news/{id}', 'NewsController@show');

Для страницы «news/{id}» можно указать, что в параметре «id» могут быть только числа:

# routes/web.php

Route::get('news/{id}', 'NewsController@show')->where('id', '\d+');

В методе where() указано регулярное выражение \d, которая означает, что в поле «id» можно использовать только числа.

В файле resources/views/news/index.blade.php указан код вывода статей.

@foreach ($news as $new)
    <a href="/news/show/{{ $new->id }}">{{ $new->title }}</a>
@endforeach

В файле resources/views/news/show.blade.php указан код вывода страницы.

<h1>{{ $news->title }}</h1>

{!! $news->content !!}

Переменные внутри фигурных скобок {{ }} выводятся через функцию htmlspecialchars(), т.е. HTML будет экранироваться. Чтобы выполнять HTML, переменные выводятся между {!! !!}.

Если на странице надо просто вывести фигурные скобки, например, {{ $var }}, то используется код @{{ $var }}.

Laravel работает через шаблонизатор Blade, поэтому файлы шаблонов заканчиваются на «blade.php».