2017-06-03 3 views
2

私はデータベースにリンクを格納するアプリケーションを用意しています。ユーザーはリンクにアクションを割り当てることができます。私はアクションが存在せず、このエラーが発生する状況を避けたい。Laravel Controller Actionが定義されているかどうかを確認してください

アクションApp \ Http \ Controllers \ PermissionController @ index2が定義されていません。

アクションが存在し、ルートがあるかどうかを確認したいと思います。可能であればブレードではどこでも良いです。

答えて

3

これを行うための方法はありません。しかし、コントローラのアクションに基づいてルートURLを生成するヘルパーメソッドactionがあります。これを利用して簡単なヘルパー関数を作成して同じ結果を得ることができます。また、このメソッドは、指定されたコントローラメソッドがルートにリンクされているかどうかをチェックするので、必要なものを正確に実行します。

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