Цена перезаписывается, несмотря на другие условия $ this-> price;

Я новичок, использующий Symfony v2.0, и мне интересно, почему моя окончательная цена перезаписывается, несмотря на то, что я использую разные аспекты if. Окончательная цена использует только последний использованный $this->price и сбивает мои калькуляторы цен, например:

if ($this->mode == 'coaching')
                {

                $n = $this->orderDetails->{'hours-number'};
                if ($n == 1)
                    $this->price = 5;
                else if ($n == 2)
                    $this->price = 35;
                else if ($n == 3)
                    $this->price = 45;
                else if ($n == 4)
                    $this->price = 55;
                else if ($n == 5)
                    $this->price = 65;

                $this->eta = '1 Day';

                $w = 0;

                if ($this->orderDetails->{'option'} == 'wins')
                {
                    $w = $this->orderDetails->{'wins-number'} * 2;
                    $this->price = $w;

                }
                $p = 0;

                if ($this->orderDetails->{'option'} == 'self')
                {
                    $p = $this->orderDetails->{'wins-number'} * 2.5;
                    $this->price = $p;

                }

Будет отображаться только последний $this->price, несмотря на то, что вызываются только «часы-числа». Могу ли я написать код по-другому, если у меня несколько условий, влияющих на цену?

У меня также есть свои функции, написанные на index.html.twig:

function updateOrderArray()
        {
            var nData = {};

            $('*[pp-type = "item"]').each(function() {
                if ($(this).attr('type') == 'checkbox')
                {
                    nData[ $(this).attr('pp-item-name') ] = $(this).is(':checked');
                }
                else
                {
                    nData[ $(this).attr('pp-item-name') ] = $(this).val();
                }
            });

            var nJSON = JSON.stringify(nData);
            $('input[name = "order_details"]').val(nJSON);


            checkDivisions();
            calculatePrice();
        }

        function calculatePrice()
        {
            $('#arena-price').html('<i class = "fa fa-spinner fa-spin" aria-hidden = "true"></i>');
            $('#arena-eta').html('<i class = "fa fa-spinner fa-spin" aria-hidden = "true"></i>');

            $.ajax({
                method: 'POST',
                url: '{{ path('service_price') }}',
                dataType: 'JSON',
                data: {
                    mode: 'coaching',
                    order_details: $('input[name = "order_details"]').val()
                }
            })

Не могли бы вы показать пример того, как выглядят входящие данные, то есть $this->orderDetails, и, может быть, какой результат вы ожидаете? Ваш код выглядит немного странно, особенно атрибуты с динамическим доступом, такие как $this->orderDetails->{'hours-number'}. Вы уверены, что $n имеет ожидаемое значение или что $this->orderDetails->{'option'} возвращает одно из обоих значений?

dbrumann 17.12.2018 17:54

Я новичок, поэтому даже консолью не пользуюсь. Как заставить работать консоль с любой предпочтительной программой? $ n правильно. Прикрепление моих функций по цене.

edo 17.12.2018 18:26

Вы можете использовать dump($n) или dd($n) в любом месте вашего кода. Первый генерирует вывод переменной, а затем продолжает код, а последний будет выгружать + умереть, поэтому он остановит код после вывода переменной, что означает, что следующие строки не выполняются.

dbrumann 17.12.2018 19:11

Вы можете просто выполнить dd($this->orderDetails) прямо перед фрагментом кода или сверху, внутри самого внешнего if-условия, а затем вставить сюда вывод. Убедитесь, что это не содержит конфиденциальной информации.

dbrumann 17.12.2018 19:13

Хорошо, моя консоль заработала, но я не могу сбрасывать файлы, прочту об этом подробнее. Хотя меня сразу осенило, у функции calculatePrice () есть данные: в нем с режимом: коучинг. Могу ли я свободно добавить новый, скажем, тип: 'oneperson', 'twoperson', а затем использовать эти два в моем файле изменения цен? например, if ($ this-> type -> 'oneperson') это сработает?

edo 17.12.2018 20:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
5
34
0

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