@SimonPomidorkin

Как разобраться в контроллерах Laravel?

Приветствую! Совсем запутался в контроллерах Laravel.

Суть проблемы заключается в том, что я создаю форму для пополняния/снятия денег с баланса, создаю BalanceController для этого и создаю в нём методы increase (для пополнения) и decrease (для снятия):

Вот форма:

Форма для пополнения и снятия с баланса
{!! Form::model($user, ['method' => 'PATCH', 'action' => ['BalanceController@increase', $user->balance]]) !!}
                            {!! Form::token() !!}
                            {!! Form::label('amount', 'Введите сумму для пополнения') !!}
                            {!! Form::text('amount',  null, ['class' => 'form-control']) !!}
                            {!! Form::submit('Пополнить', ['class' => 'btn btn-primary']) !!}
                            {!! Form::close() !!}

                            {!! Form::model($user, ['method' => 'PATCH', 'action' => ['BalanceController@decrease', $user->balance]]) !!}
                            {!! Form::token() !!}
                            {!! Form::label('amount', 'Введите сумму для снятия') !!}
                            {!! Form::text('amount',  null, ['class' => 'form-control']) !!}
                            {!! Form::submit('Снять', ['class' => 'btn btn-primary']) !!}
                            {!! Form::close() !!}


Вот мой контроллер:

BalanceController
class BalanceController extends Controller
{

    public function increase(Request $request, $id)
    {
        $user = User::findOrFail($id);
        $amount = $user->balance->amount;
        $balance = $amount + $request->amount;
        $user->balance->update(['amount' => $balance]);
        return redirect('profile');
    }

    public function decrease(Request $request, $id)
    {
        $user = User::findOrFail($id);
        $amount = $user->balance->amount;
        $balance = $amount - $request->amount;
        $user->balance->update(['amount' => $balance]);
        return redirect('profile');
    }

}


В ошибке, которая у меня возникает пишется:
Action App\Http\Controllers\BalanceController@increase not defined


В роутах у меня указан только Route::resource('/profile', 'ProfileController');. Может ли быть проблема вызвана тем, что я не указал в роуте никаких ссылок на мой БалансКонтроллер? Если да, то что указать в роуте? Route::get, Route::put или что-то иное? Заранее благодарю за ответы!
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Может ли быть проблема вызвана тем, что я не указал в роуте никаких ссылок на мой БалансКонтроллер?
Разумеется, проблема вызвана именно этим.

Если да, то что указать в роуте? Route::get, Route::put или что-то иное?
Вы в форме указали метод PATCH.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы