Laravel 5.1路由名称资源null - Route :: currentRouteName()

时间:2015-08-01 23:00:04

标签: routes middleware laravel-5.1

我注意到有几个类似的主题,但是没有一个解决方案能解决我的问题。

设置我的路线如下:

Route::resource('clientes', 'Clients\ClientsController',
    [
        'names' => [
                        'create'    => 'clients.create',
                        'store'     => 'clients.store',
                        'edit'      => 'clients.edit',
                        'update'    => 'clients.update'
                    ]
    ]
);

我必须在Middleware

中捕获路由名称
public function handle($request, Closure $next){
    var_dump(Route::currentRouteName());exit;
}

方法创建和编辑print:

string(14) "clients.create"

string(12) "clients.edit"

但是,方法存储并更新print NULL。

我们尝试的其他方法是:

$request->route()->getName();

app()->router->getCurrentRoute()->getName();

提前致谢。

2 个答案:

答案 0 :(得分:0)

试试这个:

//this is now "item2"
PaymentDetailsItemType item2 = new PaymentDetailsItemType(); 
BasicAmountType amt2 = new BasicAmountType();
amt2.setCurrencyID(CurrencyCodeType.fromValue("USD"));
double itemAmount2 = 1.00;
amt2.setValue(String.valueOf(itemAmount2));
int itemQuantity2 = 1;
item2.setQuantity(itemQuantity2);
item2.setName("item 2");
item2.setAmount(amt2);

//add item2 to your lineItems List
lineItems.add(item2);

或者如果你需要行动名称

Route::getCurrentRoute()->getPath();

来源: Illuminate/Routing/Router

查看 How to get Route in Middleware in Laravel

希望这对你有所帮助。

答案 1 :(得分:0)

我通过

相对于Route::currentRouteName()做了
// Prefix name, i.e. Interfaces
$getPrefix = preg_replace ("/\W|\./", '', $request-> route ()-> getPrefix ());
// Full route name if controller resource, unless it'd be only controller name
$getName = $request-> route ()-> getName ();
// Resource action name, or another
$getActionName = $request-> route ()-> getActionName ();
// Full route name
echo $route = $getActionName === "Closure" ? "{$getPrefix}.{$getName}.index" : $getName;

因此,我不需要为Router创建任何名称空间,因此我可以使用Request route作为魅力。