Сделать текстовое поле автоматически заполненным в зависимости от выпадающего списка (laravel) - PullRequest
0 голосов
/ 06 января 2019

Я новичок в laravel, я просто хочу спросить, как я могу заполнить другое текстовое поле, когда я выбираю данные в раскрывающемся списке. В моей таблице под названием «список книг» у меня есть эти столбцы 'book_title' и 'type_id' который имеет отношение к таблице «booktypes» со столбцами type_id и book_types

Я хочу показать типы книг в зависимости от того, какое название книги я выбрал в раскрывающемся списке. (например, Геометрия (название) Математика (тип))

теперь я могу только показывать и выбирать все типы книг в моем раскрывающемся списке на основе этих кодов

<div class="form-group">
<label>Select Book</label>
<select class="form-control" name="book_id">
<option value="">-----------</option>
 @foreach ($booklist as $boo)
<option value="{{$boo->book_id}}">{{ $boo->book_title }}</option>
 @endforeach
</select>
</div>

мой ShelfController

public function addshelfa()
{
    return view('addshelf.addtoshelfa',['booklist'=>Booklist::all()]);
}

если выбор, например, Geometry, хочет показать его тип здесь:

<div class="form-group">
<label>Book Type</label>


<input value="" type="text" class="form-control" name="type_id" disabled>



</div>

1 Ответ

0 голосов
/ 06 января 2019

Для достижения такой функциональности вам нужно добавить вызов ajax, это будет длинный ответ. Итак, я делаю это шаг за шагом, и это грубый фототип.

шаг 1: ваша функциональность ajax,

  // meta tag add inside your html head
  <meta name="csrf-token" content="{{ csrf_token() }}" />

    // ajax header setup
        $.ajaxSetup({
            headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

    /**
     * change book action
     */
    // you need to give id attribute to book_id field.
    $(document).on('change', '#book_id', function (e) {
        e.preventDefault();
        var book_id = $('#book_id').val();
        var route = "/book-type/set";
        $.ajax({
            type: 'POST',
            url: route,
            data: {
                book_id: book_id
            },
            success: function (data) {
                   // you can check for status here 
                   $("input[name=type_id]").val(data.book_type_id);

            },
            error: function(XMLHttpRequest) {
                // toastr.error('Something Went Wrong !');
            }
        });
    });

шаг 2: часть рукоятки бэкэнда

Определить маршрут для запроса дескриптора,

    Route::post('/book-type/set', 'YourController@bookTypeSet');

Определите Ваш метод,

    public function bookTypeSet(Request $request) 
    {
        // this is a rough prototype you need to give your actual data from here
        $bookId = $request->get('book_id');

        $book = Book::findOrFail($bookId);

        $bookType = $book->bookTypes;

        return response()->json(['book_type_id'=>$bookType->id, 'status'=>'200']);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...