Laravel Javascript - Проверьте, существует ли тема в сеансе, добавьте класс - PullRequest
0 голосов
/ 07 мая 2018

Я работаю в системе, где пользователь может выбрать продукт и перейти на следующую страницу. Затем этот продукт сохраняется в сеансе с использованием сеансов laravel. Когда пользователь решает перейти на следующую страницу и вернуться. Выбранный продукт действительно сохраняется в сеансе, но у них нет возможности увидеть, какой продукт они выбрали, потому что класс не применяется к выбранному продукту.

Код может прояснить это лучше:

@foreach($themes as $theme)
    <div class="col-md-4 mb-4">
        <div class="card theme-card card-hover depth-2 border-0" id="theme-id-{{$theme->id}}">
            <a href="" class="theme-link" data-toggle="modal" data-target="#theme{{ $theme->id }}">
               <div class="card-image" style="height: 200px; background-image: url('/uploads/{{ $theme->thumbnail }}'); background-size: cover; background-position: center center;"></div>
               <div class="card-body">
                    <div class="row">
                        <div class="col-md-2 vertical-center">
                            <i class="fab fa-magento fa-lg"></i>
                        </div>
                        <div class="col-md-10">
                            <p class="m-0">{!! str_limit($theme->name, $limit =  32, $end = '...') !!}</p>
                            <small class="text-muted">{{ $theme->productable_type }}</small>
                        </div>
                    </div>
                </div>
            </a>
            <div class="card-footer bg-white border-0 text-right pt-0">
                <div class="row">
                    <div class="col-md-6 text-left">
                        <input type="hidden" class="theme-name" name="theme[{{$theme->id}}]">
                        {{--<input type="hidden" value="{{ $theme->composer_package }}">--}}
                        <button data-card-id="{{$theme->id}}"  class="btn btn-orange btn-sm btn-theme-choice">Kiezen</button>
                    </div>
                    <div class="col-md-6 text-right">
                       <span style="font-size: 20px;" >€ {{ $theme->price }} EUR</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endforeach

В приведенном выше коде я для каждого корыта каждую так называемую «тему» ​​и даю идентификатор темы в качестве цели данных и в качестве идентификатора. Затем в своем коде Javascript я делаю следующее:

$('.btn-theme-choice').on('click', function (event) {

    event.preventDefault();
    newSelectedCardId = $(event.target).data('card-id');

    if(cardId === null) {
        cardId = newSelectedCardId;
    } else if (cardId !== newSelectedCardId) {
        $('#theme-id-' + cardId).removeClass('theme-chosen').find("input[name='theme["+cardId+"]']").val('');
        cardId = null;
    }

    var card = $('#theme-id-' + cardId );
    card.toggleClass('theme-chosen');
    selectedCardInput = card.find("input[name='theme["+cardId+"]']");

    if( !$('.theme-card').hasClass('theme-chosen') ) {
        selectedCardInput.val('');

    } else if ( $('.theme-card').hasClass('theme-chosen') ) {
        selectedCardInput.val('selected');
    }

    console.log(selectedCardInput);
});

Здесь я добавляю класс на карту, чтобы пользователь мог видеть, какую карту он выбрал. Затем этот выбор сохраняется в сеансе с использованием некоторого PHP-кода в контроллере

if( $theme == null ) {

    return redirect('plugins');

} elseif( $theme != null ) {

    foreach($this->predefinedArray as $value) {
        $request->session()->put('chosen_theme.' . $value, $theme->$value);
    }

    $request->session()->put('chosen_theme.composer_package', $theme->productable->composer_package);

    return redirect('plugins');
}

проблема

Как я могу прочитать сеанс и добавить класс к карточке с идентификаторами, которые были сохранены в сеансе, чтобы, если человек покидает страницу и возвращается, он может видеть, какие карточки он выбрал?

Заранее спасибо

1 Ответ

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

Попробуйте по вашему мнению ..

<div class="card theme-card card-hover depth-2 border-0 {{ \Session::get('chosen_theme.composer_package') == $theme->id ? 'theme-chosen' : '' }}" id="theme-id-{{$theme->id}}">

Когда идентификатор темы находится в сеансе, а загруженная страница добавляется, класс добавляется, а если его нет в сеансе, то класс добавляться не будет.

Дайте мне знать результат ..

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