2017-06-03 48 views
2

我有一個應用程序,我將在數據庫中存儲鏈接,允許用戶將操作分配給鏈接。我想避免行動不存在的情況,我得到這個錯誤;檢查是否定義了Laravel控制器操作

Action App \ Http \ Controllers \ PermissionController @ index2未定義。

所以我想檢查一個動作是否存在並且有路由。如果可能在刀片上,但其他任何地方都可以。

回答

3

沒有任何內置的方式來做到這一點。但我們有一個action輔助方法,它根據控制器動作生成路由URL。我們可以利用這一點並創建一個簡單的幫助函數來實現相同的結果。該方法還會檢查給定的控制器方法是否與路由鏈接,因此它完全符合您的需求。

function action_exists($action) { 
    try { 
     action($action); 
    } catch (\Exception $e) { 
     return false; 
    } 

    return true; 
} 

// Sample route 
Route::get('index', '[email protected]'); 

$result = action_exists('[email protected]'); 
// $result is true 

$result = action_exists('[email protected]'); 
// $result is false 

您也可以使用該類直接驗證操作方法的存在,但如果方法存在但未鏈接到路由,則會返回true。

+1

這是一個很棒的提示!我肯定在編程方面學到了一些新東西。我的意思是新的嘗試,但這是一個很好的使用它的地方。 – LogicDev

相關問題