Laravel присваивает идентификатор модалу Zurb Foundation - PullRequest
0 голосов
/ 05 мая 2018

В настоящее время я делаю CMS для местной благотворительности (бесплатно) и использую Laravel 5.6 вместе с Zurb Foundation 6.4. Я впервые использую Laravel, но мне это очень понравилось, и я почти закончил.

Тем не менее, у меня есть пара маленьких недоработок, которые мне нужно исправить, прежде чем я разверну их, и небольшое руководство поможет, очень. Я застрял с назначением динамического идентификатора для моего модального, чтобы обновить. Мой контроллер, маршрут и модель в порядке. Я могу обновить первую запись из таблицы модальной, и она работает как положено.

Проблема в том, что всегда отображается первая запись, независимо от того, нажимаю ли я на триггер, на несвязанной строке. Я пытался передать category_id, используя Blade, но это не работает, я либо получаю тот же результат, либо ошибку. Я вижу, в чем проблема, но я не знаю, как ее исправить. Я думаю, что мне нужно немного jQuery и / или Ajax, и я попробовал, но безрезультатно (я мусор с JS).

Как я уже сказал, мой MVC работает нормально, я могу обновить первую строку, и все, что мне нужно, - это возможность динамически назначать category_id атрибуту открытия данных. Ниже выложу свой код, и спасибо, что нашли время прочитать это.

@foreach ($categories as $category)
        <tr>
            <td>{{ $category->name }}</td>
            <td>{{ $category->posts->count() }}</td>
            <td align="center"><a data-open="editModal"><i class="fas fa-edit fa-lg" style="color: green"></i></a></td>
            <td align="center">
                <a href="{{ route('category.delete', ['id' => $category->id]) }}"><i class="fas fa-trash-alt fa-lg" style="color: red"></i></a>
            </td>
        </tr>

        <div class="reveal" id="editModal" data-reveal>
            <h3>Edit: {{ $category->name }}</h3>
                <form action="{{ route('category.update', ['id' => $category->id]) }}" method="post">
                    {{ csrf_field() }}
                    <label for="name">Category Name</label>
                        <input type="text" name="name" value="{{ $category->name }}">
                    <button class="button expanded success fullRadiusButton" type="submit">Update Category</button>
                    <a href="{{ route('categories') }}" class="close-button" aria-label="Close modal"><i class="fas fa-window-close"></i></a>
                </form>
        </div>
    @endforeach

1 Ответ

0 голосов
/ 05 мая 2018

Элемент уникален в документе на основе свойства id, но вы используете один и тот же идентификатор (editModal) несколько раз. Вы инструктируете библиотеку Reveal Modal, чтобы открыть модал с id из editModal, чтобы он нашел первый (который, как ожидается, будет единственным) и открыл его. id должен появляться в документе только один раз, иначе вы столкнетесь с непредвиденным поведением, подобным этому.

  • id - уникально для одного элемента
  • class - не уникален для элемента

Вы можете исправить это, задав каждому модальному редактору уникальный id, что-то вроде этого:

<div class="reveal" id="editModal_{{ $category->id }}" data-reveal>

Тогда в вашей ссылке на триггер эта уникальная id:

<a data-open="editModal_{{ $category->id }}">
...