Laravel виджеты и поля виджетов - PullRequest
0 голосов
/ 05 июня 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...