jquery
  • laravel
  • 2013-02-08 2 views 0 likes 
    0

    Использование Laravel в следующем сценарии, как добавить идентификатор книги к сеансу?Добавление элемента в сеанс при нажатии

    @foreach($books as $book) 
        <li> 
         {{ $book->name }} 
         <a href="#" onClick='addBookToList("<?= $book->id ?>")'>Add Book To List</a> 
        </li> 
    @endforeach 
    

    Это моя попытка. Я знаю, что это не должно работать так, но как мне его изменить?

    <script> 
    function addBookToList(bookId) 
    { 
        <? Session::put('bookId', bookId); ?> 
    } 
    </script> 
    

    ответ

    0

    Никогда не Laravel, но я полагаю, что-то вдоль этих линий может работать:

    var addBookToList = function(bookId){ 
        $.post("session.php", { 
        "bookId": bookId 
        }); 
    }; 
    

    <a href="#" onClick='addBookToList("<?= $book->id ?>")'>Add Book To List</a> 
    

    <?php Session::put('bookId', Input::get('bookId')); ?> 
    
    2

    Александр на месте. Я буду использовать маршрут для обработки запроса, но вы можете использовать тот же самый код в контроллере.

    //routes.php 
    Route::post('/ajax/add-book', function(){ 
        Session::put('bookId', Input::get('bookId')); 
    }); 
    

    Ваша реализация html/js хороша. Вот еще один способ добиться того же:

    <a href="javascript:void(0)" data-book="<?= $book->id ?>">Add Book To List</a> 
    

    И в ваших JS файл

    $('a[data-book]').click(function($e){ 
        $e.preventDefault(); 
        $.post("/ajax/add-book", { 
         "bookId": $(this).data('book') 
         }); 
    }); 
    
    +0

    Я согласен с вашим ответом, хотя вы могли бы также добавили реализацию книги массива в сессии. Элементом сеанса будет 'books', и вы сначала извлечете его содержимое, затем добавите книгу, а затем вернете массив в элемент сеанса. –

    +0

    Спасибо, это действительно помогло! Как бы вы предложили реализовать версию массива? – Ben

    Смежные вопросы