Запустить функцию и отправить запрос Laravel - PullRequest
0 голосов
/ 29 мая 2020

Код источника https://github.com/jslack2537/PHP-Calculator У меня проблемы с запуском моего бизнес-журнала c для моего приложения-калькулятора одновременно с сохранением результатов в моей базе данных, они работают независимо, но не одновременно. Я не уверен, следует ли мне комбинировать два своих контроллера или что здесь. Любые советы о том, как лучше всего их объединить или заставить процесс работать как есть.

    <?php

namespace App\Http\Controllers;

use App\Result;
use Illuminate\Http\Request;

class ResultController extends Controller
{
    public function postResultCreate(Request $request)
    {   $result = 2;
         $post = new Result([
             'first_number' => $request->input('first'),
             'second_number' => $request->input('second'),
             'operator' => $request->input('operator'),
             'sum' => $result
         ]);
        $post->save();
        return redirect('/')->with('info', 'Answer: ' .$result);
    }
}

Мой второй контроллер имеет базовую c математическую логику c

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CalculatorController extends Controller
{
    public function calculatefunc(Request $request)
    {
        $operator = $request->input('operator');
        $first_number = $request->input('first');
        $second_number = $request->input('second');
        $result = 0;

        if ($operator == "plus")
        {
            $result = $first_number + $second_number;
        }
        elseif($operator == "minus")
        {
            $result = $first_number - $second_number;
        }
        elseif($operator == "multiply")
        {
            $result = $first_number * $second_number;
        }
        elseif($operator == "divide")
        {
            $result = $first_number / $second_number;
        }
        else{
            $result= 0;
        }
        return redirect('/')->with('info', 'Answer: ' .$result);
    }
}

1 Ответ

1 голос
/ 29 мая 2020

Думаю, вам следует объединить эти два класса.

Попробуйте следующее:

class CalculatorController extends Controller
{
    public function calculatefunc(Request $request)
    {
        $operator = $request->input('operator');
        $first_number = $request->input('first');
        $second_number = $request->input('second');
        $result = $this->calculateByOperator($operator, $first_number, $second_number);

        return redirect('/')->with('info', 'Answer: ' . $result);
    }

    private function calculateByOperator($operator, $first_number, $second_number)
    {
        if ($operator == "plus") {
            $result = $first_number + $second_number;
        } elseif ($operator == "minus") {
            $result = $first_number - $second_number;
        } elseif ($operator == "multiply") {
            $result = $first_number * $second_number;
        } elseif ($operator == "divide") {
            $result = $first_number / $second_number;
        } else {
            $result = 0;
        }

        return $result;
    }

    public function postResultCreate(Request $request)
    {
        $first_number = $request->input('first');
        $second_number = $request->input('second');
        $operator = $request->input('operator');
        $result = $this->calculateByOperator($operator, $first_number, $second_number);
        $post = new Result([
            'first_number' => $first_number,
            'second_number' => $second_number,
            'operator' => $operator,
            'result' => $result
            // it should be result not sum because it will depend on your operator. you can also use operator here
        ]);
        $post->save();
        return redirect('/')->with('info', 'Answer: ' . $result);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...