Laravel передает входные данные поля просмотра в контроллер, а затем возвращает вычисленное значение в отключенном поле

Итак, что я хочу сделать, это взять значения из пользовательского ввода, затем выполнить некоторые вычисления с ним внутри контроллера с помощью метода, и возвращаемое значение этого метода будет отображаться в поле ниже с отключенным атрибутом, который будет при отправке формы будет передан в базу данных. Итак, что я имею в виду:

            <input class = "form-control {{ $errors->has('price') ? 'is-invalid' : '' }}" type = "number" name = "price" id = "price" value = "{{ old('price', '') }}" step = "0.001" required>
            <input class = "form-control {{ $errors->has('quantity') ? 'is-invalid' : '' }}" type = "number" name = "quantity" id = "quantity" value = "{{ old('quantity', '') }}" step = "0.001" required>
            <input class = "form-control {{ $errors->has('other_expenses') ? 'is-invalid' : '' }}" type = "number" name = "other_expenses" id = "other_expenses" value = "{{ old('other_expenses', '') }}" step = "0.01" required>
            <input class = "form-control {{ $errors->has('coefficient') ? 'is-invalid' : '' }}" type = "number" name = "coefficient" id = "coefficient" value = "{{ old('coefficient', '') }}" step = "0.001" required>
            <input class = "form-control {{ $errors->has('total') ? 'is-invalid' : '' }}" type = "number" name = "total" id = "total" value = "{{ old('total', '') }}" step = "0.001" disabled>

И затем я хочу сделать некоторые вычисления через контроллер и вернуть некоторое значение в поле «итого». Итак, в моем контроллере я должен принять это тада, а затем вычислить что-то вроде: итог = (ценаколичестводругие_расходы)*коэффициент

вы можете сделать вызов ajax, чтобы получить расчетное значение.

Aqib Javed 18.03.2022 12:54

не могли бы вы рассказать подробнее, как мне это сделать, потому что я не нашел рабочего решения

Cicovic Dejan 18.03.2022 13:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Судя по приведенному выше коду, все, что вам нужно для расчета, находится в форме. Есть ли конкретное действие, которое происходит на контроллере?

Например, если все, что вам нужно для расчета, это total = (price * quantity * other_expenses ) * coefficient, вам может не обязательно отправлять данные на контроллер.

Вы можете использовать Alpine js для выполнения расчета прямо на странице.

Следуйте шагу ниже:

  1. Включите alpine в свой макет
    <script defer src = "https://unpkg.com/[email protected]/dist/cdn.min.js"></script>

<script src = "https://unpkg.com/[email protected]/dist/cdn.min.js"></script>
<div x-data = "{
              price: parseInt( '120'), 
              quantity: parseInt( '5'), 
              other_expenses: parseInt( '50'),
              coefficient: parseInt( '2') 
            }">
    <input type = "number" name = "price" x-model.number = "price"  />
    <input type = "number" name = "quantity" x-model.number = "quantity" />
    <input type = "number" name = "other_expenses" x-model.number = "other_expenses" />
    <input type = "number" name = "coefficient" x-model.number = "coefficient" />
    <input type = "text" x-bind:value = "price * quantity * other_expenses * coefficient" name = "total" disabled />
</div>

Примечание. Вы можете передать старые значения вот так price: parseInt( '{{ old('price') }}')

Вы можете представить и общее количество должно быть представлено.

Если вам необходимо использовать контроллер для вычислений, возможно, вам придется использовать ajax с vuejs или jquery.

Да, я хотел, чтобы это вычислялось на стороне сервера, так как мне не нравится манипулирование данными... При этом нет проверки на стороне сервера, а также, если я отключу поле, оно покажет цену, но метод хранения не сохраняет значение в базе данных... Как я могу проверить это значение, используя серверную часть? ** Расчетное значение передается только для чтения, теперь мне просто нужно проверить значение...

Cicovic Dejan 21.03.2022 09:49

Другие вопросы по теме