21

現在のルート アクションを取得しようとしていますが、その方法がわかりません。Laravel 4 で使用してRoute::currentRouteAction()いましたが、今は少し異なります。

コントローラーでやろうとしていますRoute::getActionName()が、メソッドが見つからないというメッセージが表示され続けます。

<?php namespace App\Http\Controllers;

use Route;

class HomeController extends Controller
{
    public function getIndex()
    {
        echo 'getIndex';
        echo Route::getActionName();
    }
}
4

13 に答える 13

25

アクション名を取得するには、次を使用する必要があります。

echo Route::getCurrentRoute()->getActionName();

そしてそうではない

echo Route::getActionName();
于 2014-11-10T09:50:05.493 に答える
22

Laravel 5 では、メソッドまたはコンストラクター インジェクションを使用する必要があります。これはあなたが望むことをします:

<?php namespace App\Http\Controllers;

use Illuminate\Routing\Route;

class HomeController extends Controller
{
    public function getIndex(Route $route)
    {
        echo 'getIndex';
        echo $route->getActionName();
    }
}
于 2014-11-10T10:45:27.253 に答える
6

アクション名のみを取得するには (コントローラ名なし):

list(, $action) = explode('@', Route::getCurrentRoute()->getActionName());
于 2015-11-10T15:55:23.440 に答える
4

その代わり

use Illuminate\Routing\Route;

これを使って

use Illuminate\Support\Facades\Route;

ルートのエイリアスを取得したい場合は、次を使用できます。

Route::getCurrentRoute()->getName()
于 2015-04-20T21:13:58.460 に答える
2

Laravel 5.5では、メソッド/アクション名、つまりshow、edit、custom-methodなどだけが必要な場合は、これを行います

Route::getCurrentRoute()->getActionMethod() 

呼び出される実際のメソッドを取得するために、explode または list を使用する必要はありません。これを考えてくれたLaravelに感謝します。

于 2018-01-08T16:52:27.013 に答える
1

Laravel 5.1 の場合:

$route = new Illuminate\Routing\Route();
$route->getActionName(); // Returns App\Http\Controllers\MyController@myAction
$route->getAction(); // Array with full controller info

このクラスには便利なメソッドがたくさんあります。詳細については、コードを確認してください。

于 2015-08-24T20:44:30.660 に答える