dan rota adını almak, bu aracılığıyla geçerli URL'den güzergah adını alabilirim?laravel laravel verilmiştir URL'den
Teşekkür ederiz.
dan rota adını almak, bu aracılığıyla geçerli URL'den güzergah adını alabilirim?laravel laravel verilmiştir URL'den
Teşekkür ederiz.
Bunun kutudan çıkma Laravel ile yapılabileceğini sanmıyorum. Ayrıca, Laravel'deki tüm rotaların isimlendirilmediğini unutmayın, bu nedenle rota adını değil, rota nesnesini almak isteyebilirsiniz.
Olası bir çözüm, varsayılan \Iluminate\Routing\Router
sınıfını genişletmek ve korunan Router::findRoute(Request $request)
yöntemini kullanan özel sınıfınıza genel bir yöntem eklemek olabilir.
bir basitleştirilmiş bir örnek:
class MyRouter extends \Illuminate\Routing\Router {
public function resolveRouteFromUrl($url) {
return $this->findRoute(\Illuminate\Http\Request::create($url));
}
}
Bu belirttiğiniz URL ile eşleşen rotayı dönmelidir, ama aslında bu test etmedim.
Bu yeni özel yönlendiricinin yerleşik olanı değiştirmek istiyorsanız, yeni sınıfınızı varsayılan yerine IoC konteynerine kaydetmek için yeni bir ServiceProvider oluşturmanız gerekeceğini unutmayın.
Sen ihtiyaçlarınıza aşağıdaki kodda ServiceProvider adapte olabilir:
https://github.com/jasonlewis/enhanced-router
Aksi takdirde sadece gerektiği gibi elle kodunuzu özel yönlendirici örneğini istiyorsanız, bir şeyler yapmak olurdu gibi:
$myRouter = new MyRouter(new \Illuminate\Events\Dispatcher());
$route = $myRouter->resolveRouteFromUrl('/your/url/here');
varsayılan \Iluminate\Routing\Router
sınıfını uzatmadan yapılabilir. Eğer dispatchToRoute
çağrısından sonra Route::currentRouteName()
ararsanız
Route::dispatchToRoute(Request::create('/your/url/here'));
$route = Route::currentRouteName();
, bu sevk isteğin geçerli Rota adını döndürür.
Özellikle yararlıdır çünkü a) Laravel 5.1'de çalışır ve b) varsayılan sınıfı genişletme gereksinimini ortadan kaldırır. Bunun için çok teşekkür ederim! –
Çok kolay yolu Laravel 5.2
app('router')->getRoutes()->match(app('request')->create('/qqq/posts/68/u1'))->getName()
Bu slug.posts.show
Güncelleme gibi benim Rota adını verir yapmalı: For yöntem POST, PUT veya gibi DELETE th gibi yapabilirsiniz Eğer getValidators
vb getAction
gibi birden fazla yararlı kamu yöntemleri çağırmak fazla ayrıntı için kaynak https://github.com/illuminate/routing/blob/master/Route.php kontrol edebilirsiniz Illuminate\Routing\Route
örneğini dönecektir app('router')->getRoutes()->match(app('request')->create('/qqq/posts/68/u1', 'POST'))
bu çalıştırdığınızda Ayrıca
app('router')->getRoutes()->match(app('request')->create('/qqq/posts/68/u1', 'POST'))->getName()//reference https://github.com/symfony/http-foundation/blob/master/Request.php#L309
olduğunu.
laravel 5.3 de çalışıyor. –
Laravel 5.4 için de çalışıyor. Teşekkürler bayım! – racl101
Ne yapmaya çalıştığınızı açıklayabilir misiniz? – TunaMaxx
@TunaMaxx Geçerli bir URL değil, geçerli URL'den rota adını almaya çalışıyorum. – user1995781
Hayır, tamamen anlıyorum, ama anlamıyorum * neden * yapmalısın. Esas olarak, route.php dosyasını tersine çevirmek istiyorsunuz. – TunaMaxx