Laravel - Действие не определено, но оно определено - PullRequest
0 голосов
/ 30 мая 2018

Я получаю эту ошибку при попытке загрузить blade.php

Action App\Http\Controllers\InventoryItemController@change not defined. 

У меня есть функция изменения в InventoryItemController

    public function change($new_status)
{
        //  
}

Это началось, когда я хотел сделать кнопку

<a href="{{action('InventoryItemController@change', $inventoryitem['new_status'])}}"class="btn btn-info">Confirm Change</a>

Я сделал все то же самое, когда сделал кнопку «Редактировать», и эта кнопка работает нормально.

ОБНОВЛЕНИЕ 1

Моя кнопка теперь выглядит вот так

<a href="{{route('change', [$inventoryitem['new_status'], 
$inventoryitem['asset_id']])}}"class="btn btn-info">Confirm Change</a>

и моя функция изменения - это

public function change($new_status, $asset_id) 
    {
        $asset = Asset::find($asset_id);
        $asset->status = $new_status;
        return redirect('showasset', compact('asset','asset_id'));  
    }

, и мой маршрут в сети такой:

Route::get('change/{$new_status}/{$asset_id}','InventoryItemController@change')->name('change');

Но после того, как я нажимаю кнопку, он просто перенаправляет меня на URL .../change/4/1 и все тут.Ничего не меняется.

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Определите метод вашего контроллера в файле маршрута следующим образом:

Route :: get ('url / {new_status}', InventoryItemController @ change);

Ответ на ОБНОВЛЕНИЕ 1

    public function change($new_status, $asset_id) 
    {
        $asset = Asset::find($asset_id);
        $asset->status = $new_status;
        $asset->save();     
        return view('your_view_path',compact('variable1','variable2'));
    }
0 голосов
/ 31 мая 2018

Последняя ошибка была на моем маршруте

Route::get('change/{$new_status}/{$asset_id}','InventoryItemController@change')->name('change');

Так должно быть

Route::get('change/{new_status}/{asset_id}','InventoryItemController@change')->name('change');

После этого изменения все работает без нареканий.Спасибо за вашу помощь, ребята!

0 голосов
/ 30 мая 2018

Использование Action устарело в Laravel

Вместо него можно использовать маршруты.

Определить маршруты в файлах маршрутов (/routes/web.php), например.

Route::get('change/{status}','InventoryItemController@change')->name('change');

, а затем, по вашему мнению,

<a href="{{route('change', $inventoryitem['new_status'])}}"class="btn btn-info">Confirm Change</a>

В вашем контроллере используйте.

public function change ($status){
  // rest of the function.
}

Надеюсь, это поможет

...