Есть сайт на Laravel 8 и админка к нему, все самописное.
Встал вопрос дать юзерам генерить странички из админки и тут собственно вопрос:
Где хранить код, который напишет юзер? В БД? В файлах? Если в файлах нужно юзать кеш?
Вообще еще такого не делал и не понимаю как правильно. Фронтом в пике будет пользоваться примерно 500 человек.
Дополнительно:
Содержание
Встал вопрос дать юзерам генерить странички из админки
Обычно юзеры генерят контент, 90% которого - текст. Ну еще таблички и картинки. Или у вас другой функционал, если да - описывайте какой.
Ответы:
Используйте базу данных на первых парах точно.
Возможно, в будущем захочется применить кеширование через статичные файлы или что-то похожее, но сейчас вы ничего сверх невероятного не назвали.
Важно правильно подобрать поля и оптимизировать базу, соблюдая все нормальные формы (если таблиц планируется много, конечно).
Вот например, какие поля есть в MySQL: https://dev.mysql.com/doc/refman/8.0/en/storage-re...
Поля типа LONGTEXT могут съесть до 4 гигабайтов (!!!) чистого текста в одной строке. Но, скорее всего, вам хватит и обычного TEXT с ~65 тысячами символов. Только аккуратнее с поиском по таким полям.
-
на первых парах точно.
А если вам вставать ко второй? )
используйте генератор. Смысл простой.
У вас есть запись в бд и сгенерированный файл.
Алгоритм такой.
1. при редактировании вы забираете данные из бд
2. при сохранении данные кладутся в бд и генерируется статичная страница
3. при обновлении см пп 1
Я бы хранил в файлах, создайте в storage папку для хранения и создайте геттер и сеттер (или акцессор и мутатор, кому как нравиться) для модели. К примеру у вас есть модель AppModelsPage
|
1 |
public function getCodeAttribute(): string { return file_get_contents(storage_path("pages/page_{$this->id}.html")); } public function setCodeAttribute(string $html_code): void { file_put_contents(storage_path("pages/page_{$this->id}.html"), $html_code); } |
Не забыть при удалении экземпляра модели удалить и файл, для этого используйте события модели.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для хранения кода страниц в Laravel, обычно используется шаблонизатор Blade. Blade позволяет создавать шаблоны страниц с помощью простого и интуитивно понятного синтаксиса.
Для создания новой страницы в Laravel с использованием Blade, вам необходимо создать новый файл в директории resources/views. Например, если вы хотите создать страницу с именем "welcome.blade.php", то вам нужно создать файл welcome.blade.php в директории resources/views.
Пример кода страницы welcome.blade.php:
После того как вы создали файл страницы, вы можете использовать эту страницу в ваших контроллерах. Например, если вы хотите вернуть страницу welcome.blade.php из контроллера, вы можете сделать это следующим образом:
В данном примере мы используем функцию view() для возвращения страницы welcome.blade.php. Laravel автоматически будет искать файл welcome.blade.php в директории resources/views и отобразит его содержимое.
Таким образом, вы можете легко хранить код страниц в Laravel с помощью шаблонизатора Blade и директории resources/views. Не забывайте также о других возможностях Laravel, таких как использование макетов (layouts) для создания общих элементов страницы и включения динамических данных в ваши шаблоны.
Для хранения кода страниц в Laravel, есть несколько подходов, которые можно использовать в зависимости от требований проекта и личных предпочтений разработчика. Ниже я рассмотрю несколько способов хранения кода страниц в Laravel и приведу примеры использования каждого из них.
1. Использование Blade шаблонов:
Blade - это мощный шаблонизатор, встроенный в Laravel, который позволяет создавать шаблоны страниц с помощью простого и выразительного синтаксиса. Для хранения кода страниц с использованием Blade шаблонов, вам нужно создать отдельные файлы .blade.php для каждой страницы и определить их в папке resources/views. Например, для создания страницы "home.blade.php" вы можете создать файл в папке resources/views и написать в нем HTML-код страницы с использованием Blade-директив.
Пример кода страницы home.blade.php:
htmlHome Page
Welcome to our website!
2. Использование компонентов:
В Laravel также есть возможность создавать и использовать компоненты, которые позволяют повторно использовать части кода на разных страницах. Для этого вам нужно создать отдельные компоненты в папке resources/views/components и затем подключать их на нужных страницах. Например, вы можете создать компонент "header.blade.php" для хранения кода шапки сайта и подключить его на всех страницах, где необходимо отобразить шапку.
Пример кода компонента header.blade.php:
htmlOur Website
Home
About Us
Contact
3. Использование контроллеров и маршрутов:
Для хранения кода страниц в Laravel также можно использовать контроллеры и маршруты. Вы можете определить маршруты в файле routes/web.php и указать контроллер, который будет обрабатывать запросы на эти маршруты. В контроллерах вы можете определить логику обработки запросов и передать данные в представления для отображения на страницах.
Пример кода контроллера PagesController.php:
phpnamespace App\Http\Controllers;
use Illuminate\Http\Request;
class PagesController extends Controller
{
public function home()
{
return view('home');
}
public function about()
{
return view('about');
}
public function contact()
{
return view('contact');
}
}
4. Использование CRUD операций:
Если ваш проект требует хранения и отображения данных из базы данных, то для работы с ними в Laravel можно использовать CRUD операции (Create, Read, Update, Delete). Для этого вы можете создать модели для ваших данных, контроллеры для управления ими и представления для отображения данных на страницах. Например, вы можете создать модель Post для хранения постов блога и реализовать CRUD операции для работы с ними.
Пример кода модели Post.php:
phpnamespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
5. Использование ресурсов и макетов:
Для более удобного и структурированного хранения кода страниц в Laravel, вы можете использовать ресурсы и макеты. Ресурсы позволяют организовать код в отдельные классы для работы с данными, а макеты позволяют определить общую структуру страницы, которая будет применяться ко всем страницам вашего сайта. Например, вы можете создать ресурс PostResource для работы с постами и макет app.blade.php для определения общей структуры страниц.
Пример кода ресурса PostResource.php:
phpnamespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
'title' => $this->title,
'content' => $this->content,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
Пример кода макета app.blade.php:
html@yield('title')
@yield('content')
В заключение, в Laravel есть множество способов хранения кода страниц, и выбор конкретного подхода зависит от требований вашего проекта и вашего опыта работы с фреймворком. Надеюсь, что мой ответ поможет вам разобраться с этой проблемой и выбрать подходящий способ хранения кода страниц в Laravel.