Laravel - 动作未定义但已定义

时间:2018-05-30 11:30:56

标签: laravel controller laravel-blade

我在尝试加载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 :(得分:3)

在Laravel中不推荐使用Action

您可以改用路线。

在路线文件(/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.
}

希望这有帮助

答案 1 :(得分:1)

在路径文件中定义控制器的方法如下:

路线::得到(&#39; URL / {NEW_STATUS}&#39;,InventoryItemController @变化);

在UPDATE 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'));
    }

答案 2 :(得分:0)

最终错误在我的路线中

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

应该是这样的

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

在那之后,一切都在完美无缺地运作。谢谢你的帮助!