2017-01-30 17 views
0

URLを渡してコントローラのメソッド名を取得する方法を見つけるのにもっと時間を捜しましたが、私の予想される答えは見つかりませんでした。私はURLを渡すメソッドを作成したいと思いますが、それは以下のような対応するコントローラアクションを与えるでしょうが、私は理解できません。 URLをlaravelに渡すことでコントローラのアクションを取得する方法

は私が http://example.com/abc その後、URLを生成します Route::get('/abc', '[email protected]')などのような私のアプリケーションでルートがどのように私は http://example.com/abc

を渡すことによって [email protected]を得ることができる場合だけ Route::currentRouteAction()

をある現在のURLのアクションを返すヘルパーを見つけました

function getAction($url){ 
     //what will be logic? 
     // return like App\Controllers\[email protected] 
    } 

各メニューのURLをチェックすることで、メニューの表示と非表示に必要なカスタム許可システムを作成する必要があります。

次の操作を行うことができ、あなたのコントローラ内の
+0

質問を更新しました。@AlexeyMezenin –

答えて

0

<?php 
    use Illuminate\Routing\Router; 
    use Illuminate\Http\Request; 

    public function index(Request $request, Router $route) 
    { 
     $action = $router->getRoutes()->match($request)->getActionName(); 

     // action should be what you're looking for. 
    } 
+0

コントローラでは、現在のルートでのみ動作します。私は私の質問を更新しました、それを確認してください@Rafael Berro –

0

あなたは、あなたがしたい場合は、これを試すことができます。

Route::get('/the/url', '[email protected]'); 

何がルートにURLを呼び出すたびに、あなたの方法がされますと呼ばれる。 メソッドを呼び出すためにそのURLに移動する必要はありません。フォームアクションまたはボタンアクションによって呼び出すことができ、メソッドを実行するだけです。

編集:

use Illuminate\Routing\Route; 

これはあなたの機能は次のとおりです:

public function method(Route $route, $url) 
    { 

     $routes = \Route::getRoutes()->getRoutes(); 
     foreach($routes as $r){ 
      if($r->getUri() == $url){ 
       $youraction= $r->getActionName(); 
       dd($youraction); 
      } 
      else{ 
       dd('does not exist'); 
      } 
     } 
    } 

をテスト済み

URLは、パラメータ(プレーンルート)として、あなたのURL インポートこれです。

+0

あなたの答えは、アプリケーションのルートを定義するためのものです。これらはすでに私のアプリケーションで定義されています。 Route :: get( '/ the/url'、 'YourController @ method') 'のようなルートの場合、 '/ the/url'を渡して' YourController @ method 'を得る方法はありますか? –

+0

あなたのフィードバックに感謝します。私の質問で説明したようなヘルパー関数を作成したい。パラメータの値はインスタンスではなくURLになります。 @Onix –

+0

最後の編集私はそれをテストし、それは正常に動作します@Akashkhan – Onix

関連する問題