В моем приложении есть домашняя страница с серией блоков, которые я добавил, включив их в страницу с использованием синтаксиса Blade.Все эти виджеты используют HTML и Bootstrap.
Каждый блок хранится в папке с именем Widgets и представляет собой просто набор HTML, как я уже говорил выше.
Например quick-search-form.blade.php
<div class="grid-item element-item" tabindex="9">
@include('widgets.events-cms')
</div>
У меня есть те же блоки в библиотеке виджетов, из которых пользователь должен иметь возможность выбирать, и затем эти виджеты появляются на домашней странице пользователя.
Это будет что-то, что яможно сделать с некоторыми таблицами?
Моя концептуальная идея
A widget таблица, которая содержит идентификаторы виджетов, такие как #quick-search
и что 'в основном это будет.
public function up()
{
Schema::create('widgets', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('html_id');
$table->timestamps();
});
}
A user_widget таблица, содержащая user_id , widget_id и position , представляющий порядок отображения на странице.
public function up()
{
Schema::create('users_widgets', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('widget_id');
$table->integer('position')->unique();
$table->timestamps();
});
}
Затем в Laravel я настроил бы один ко многим от пользователя к виджетам.
/**
* Define that a User can have many widgets
*/
public function widgets()
{
return $this->hasMany(Widget::class, 'user_id', 'id');
}
Тогда я мог бы использовать следующее:
$widgets = $user->widgets
В представлении
@foreach($widgets as $widget)
$widget->id
@endforeach
Мои основные проблемы:
Как мне получить HTML-код для виджета через идентификатор?Когда пользователь удаляет виджет, я могу использовать AJAX, но как мне уменьшить значение позиции?