Как вывести SVG схему мест из базы данных?

Для вывода SVG схемы мест из базы данных с использованием фреймворка Laravel, вам потребуется выполнить несколько шагов.

1. Создайте таблицу в вашей базе данных для хранения схем мест. В этой таблице должны быть столбцы для хранения SVG-кода схемы и других соответствующих сведений о месте. С использованием миграций Laravel, вы можете создать таблицу с помощью следующей команды Artisan:

php artisan make:migration create_places_table --create=places

в этой команде я создаю миграцию для таблицы places

<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreatePlacesTable extends Migration
{
    public function up()
    {
        Schema::create('places', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->text('svg_code');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('places');
    }
}

В этой миграции я определяю столбцы таблицы places, включая svg_code, которая будет хранить SVG-код схемы мест.

2. Создайте модель Place для работы с данными таблицы "places". С использованием Artisan, вы можете создать новую модель с помощью команды:

php artisan make:model Place

В этой модели, вы должны установить значение $fillable атрибута, чтобы разрешить массовое заполнение столбца "svg_code":

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Place extends Model
{
    protected $fillable = ['svg_code'];
}

3. Создайте контроллер PlaceController для обработки логики вывода SVG схем мест. С использованием Artisan, вы можете создать новый контроллер с помощью команды:

php artisan make:controller PlaceController --resource

В контроллере PlaceController, вы можете определить метод index для получения и передачи данных представлению:

<?php

namespace AppHttpControllers;

use AppPlace;
use IlluminateHttpRequest;

class PlaceController extends Controller
{
    public function index()
    {
        $places = Place::all();
        return view('places.index', compact('places'));
    }
}

4. Создайте представление places.index для отображения списка мест и соответствующих SVG-схем. Создайте файл index.blade.php в каталоге resources/views/places:

<!DOCTYPE html>
<html>
<head>
    <title>Места</title>
</head>
<body>
    <h1>Список мест</h1>
    <ul>
        @foreach($places as $place)
            <li>
                <h4>{{ $place->name }}</h4>
                <div>{!! $place->svg_code !!}</div>
            </li>
        @endforeach
    </ul>
</body>
</html>

5. Настройте маршрут в файле routes/web.php, чтобы отобразить список мест. Добавьте следующий код внутри функции Route::group:

Route::resource('places', 'PlaceController');

После выполнения этих шагов, вы должны быть в состоянии вывести список мест и соответствующих SVG-схем на странице /places. Схемы будут отображаться с помощью директивы {!! !!}, что позволяет отображать текст как неэкранированный HTML-код. Пожалуйста, убедитесь, что SVG-код в вашей базе данных содержит правильную структуру SVG-файла для корректного отображения.