Итак, что я хочу сделать, это взять значения из пользовательского ввода, затем выполнить некоторые вычисления с ним внутри контроллера с помощью метода, и возвращаемое значение этого метода будет отображаться в поле ниже с отключенным атрибутом, который будет при отправке формы будет передан в базу данных. Итак, что я имею в виду:
<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>
И затем я хочу сделать некоторые вычисления через контроллер и вернуть некоторое значение в поле «итого». Итак, в моем контроллере я должен принять это тада, а затем вычислить что-то вроде: итог = (ценаколичестводругие_расходы)*коэффициент
не могли бы вы рассказать подробнее, как мне это сделать, потому что я не нашел рабочего решения
Судя по приведенному выше коду, все, что вам нужно для расчета, находится в форме. Есть ли конкретное действие, которое происходит на контроллере?
Например, если все, что вам нужно для расчета, это total = (price * quantity * other_expenses ) * coefficient
, вам может не обязательно отправлять данные на контроллер.
Вы можете использовать Alpine js для выполнения расчета прямо на странице.
Следуйте шагу ниже:
Включите 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.
Да, я хотел, чтобы это вычислялось на стороне сервера, так как мне не нравится манипулирование данными... При этом нет проверки на стороне сервера, а также, если я отключу поле, оно покажет цену, но метод хранения не сохраняет значение в базе данных... Как я могу проверить это значение, используя серверную часть? ** Расчетное значение передается только для чтения, теперь мне просто нужно проверить значение...
вы можете сделать вызов ajax, чтобы получить расчетное значение.