Вывести страницы из базы данных
Сначала надо настроить подключение к базе данных в файле .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».
Авторизуйтесь, чтобы добавлять комментарии