Выбранное название продукта для автоматического заполнения цены из БД - PullRequest
1 голос
/ 30 сентября 2019

Я пробовал решение, указанное на Как узнать цену соответствующего продукта, когда я выбираю продукт в окне выбора? , но все еще не могу решить свою проблему. Это моя форма (лезвие ларавеллы):

    @extends('layouts.app')

    @section('content')
        <br>
        <h1>Add Sale</h1>
        {!! Form::open(['action' => 'SalesController@store', 'method' => 'POST', 'enctype' => 'multipart/form-data']) !!}

        <div class="form-group">
            <label for="product_name">Product Name</label>
            <select name="product_name" id="product_name" class="form-control">
                <option>Select Product Name</option>
                @foreach ($stocks as $stock)
                    <option value="{{ $stock->stock_name }}">{{ $stock->stock_name}}</option>
                @endforeach
            </select>
        </div>

        <div class="form-group">
            {{Form::label('sale_quantity', 'Quantity')}}
            {{Form::text('sale_quantity', '', ['class' => 'form-control', 'placeholder' => 'Quantity'])}}
        </div>

        <div class="form-group">
            <label for="unit_selling_price">Unit Selling Price </label>
            <select name="unit_selling_price" id="unit_selling_price" class="form-control">
                <option>Select Unit Selling Price</option>
                @foreach ($stocks as $stock)
                    <option value="{{ $stock->unit_selling_price }}">{{ $stock->unit_selling_price}}</option>
                @endforeach
            </select>
        </div>

        <div class="form-group">
            {{Form::label('total_sales_cost', 'Total Sales Cost')}}
            {{Form::text('total_sales_cost', '', ['class' => 'form-control', 'placeholder' => 'Total Sales Cost'])}}
        </div>
        {{Form::submit('Submit', ['class' => 'btn btn-primary'])}}
        {!! Form::close() !!}
    @endsection

Форма Скриншот выше. enter image description here

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Вы можете использовать ajax. Вы можете передать stock_name в качестве параметра маршрута или с атрибутом данных ajax. В этом примере я буду использовать атрибут data.

$("#product_name").on('change', function() {
    let element = $(this);
    $.ajax({
        url: 'your-url-here',
        method: 'GET',
        data: {
            'stock_name': element.val(),
        },
        success: function(response) {
            $("#unit_selling_price").val(response.data).trigger('change');
        },
    });
});

Ваш PHP-скрипт в некоторых методах контроллера будет выглядеть так:

public function getTotalCost(Request $request)
{
    $stock = Stock::where('stock_name', 'like', $request->input("stock_name"))->first();
    if ($stock == null) {
        return null;
    }
    return response()->json($stock->unit_selling_price);
}

Надеюсь, это поможет.

0 голосов
/ 03 октября 2019

SalesController.php изменения

public function getUnitSellingPrice(Request $request, $stock_id)
{

    $stock = Stock::where('stock_id', $stock_id)->first();
    if ($stock == null) {
        return null;
    }

    return response()->json($stock->unit_selling_price);
}

create.blade.php изменения

<div class="form-group">
    <label>Product Name</label>
    <select name="product_name" class="form-control" id="stock_name">
        <option>Select Product Name</option>
        @foreach ($stocks as $stock)
            <option value="{{ $stock->stock_id }}">{{ $stock->stock_name}}</option>
        @endforeach
    </select>
</div>

<div class="form-group">
    {{Form::label('unit_selling_price', 'Unit Selling Price')}}
    {{Form::text('unit_selling_price', '', ['class' => 'form-control', 'placeholder' => 'Unit Selling Price', 'id' => 'unit_selling_price'])}}
</div>

<div class="form-group">
    {{Form::label('sale_quantity', 'Quantity')}}
    {{Form::text('sale_quantity', '', ['class' => 'form-control', 'placeholder' => 'Quantity', 'id' => 'sales_quantity'])}}
</div>

<div class="form-group">
    {{Form::label('total_sales_cost', 'Total Sales Cost')}}
    {{Form::text('total_sales_cost', '', ['class' => 'form-control', 'placeholder' => 'Total Sales Cost', 'id' => 'total_sales_cost', 'readonly' => 'true', 'cursor: pointer' => 'true' ])}}
</div>



{{Form::submit('Submit', ['class' => 'btn btn-primary'])}}
{!! Form::close() !!}

<script>
    $(document).ready(function () {
        $("#stock_name").on('change', function () {
            var stock_id = $(this).val();
            $.ajax({
                url: '/sales-price/getunitsellingprice/'+stock_id,
                method: 'GET',
                success: function (response) {
                    console.log(response);
                    $("#unit_selling_price").val(response);
                },
            });
        });
    });
</script>


<script>
    $(document).ready(function () {
        $("#total_sales_cost").click(function () {
            var sales_quantity = $("#sales_quantity").val();

            var unit_selling_price = $("#unit_selling_price").val();
            var total_sales_cost = (sales_quantity * unit_selling_price);

            $('#total_sales_cost').val(total_sales_cost);
        });
    });
</script>

изменения маршрута

Route::any('sales-price/getunitsellingprice/{stock_id}','SalesController@getUnitSellingPrice');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...