从 url 在 Laravel 获取最新的 slug
Getting the lastest slug from url in Laravel
这是我的路线:
Route::get('{slug?}/{slug2?}/{slug3?}', 'PageController@show');
这就是我在我的服务提供商中获得 slug 值的方式:
$this->app->request->route('slug2')
我的 url 看起来像 base_url/slug
或 base_url/slug/slug2
或 base_url/slug/slug2/slug3
。我正在寻找一种 laravel 方法来始终获得最新的 slug,无论我的 url 看起来如何。有没有办法做到这一点 ?
感谢
您可以使用explode
$url = base_url/slug/slug2/slug3;
$slugs = explode ("/", $url);
$latestslug = $slugs [(count ($slugs) - 1)];
使用它我可以从我的 url 中获取最新的 slug。但即使我必须改变路线,我仍在寻找更好的解决方案。这是代码:
use Illuminate\Support\Facades\Request;
....
Request::segment(count(Request::segments()))
虽然不是一个优雅的方法,但这个方法可行
$has_valid_slug = count($request->route()->parametersWithoutNulls());
if ($has_valid_slug) {
$last_slug_key = key(array_slice($request->route()->parametersWithoutNulls(),
-1, 1, TRUE ));
$last_slug = $request->route()->parametersWithoutNulls()[$last_slug_key];
}
https://laravel.com/api/5.4/Illuminate/Routing/Route.html#method_parametersWithoutNulls
这是我的路线:
Route::get('{slug?}/{slug2?}/{slug3?}', 'PageController@show');
这就是我在我的服务提供商中获得 slug 值的方式:
$this->app->request->route('slug2')
我的 url 看起来像 base_url/slug
或 base_url/slug/slug2
或 base_url/slug/slug2/slug3
。我正在寻找一种 laravel 方法来始终获得最新的 slug,无论我的 url 看起来如何。有没有办法做到这一点 ?
感谢
您可以使用explode
$url = base_url/slug/slug2/slug3;
$slugs = explode ("/", $url);
$latestslug = $slugs [(count ($slugs) - 1)];
使用它我可以从我的 url 中获取最新的 slug。但即使我必须改变路线,我仍在寻找更好的解决方案。这是代码:
use Illuminate\Support\Facades\Request;
....
Request::segment(count(Request::segments()))
虽然不是一个优雅的方法,但这个方法可行
$has_valid_slug = count($request->route()->parametersWithoutNulls());
if ($has_valid_slug) {
$last_slug_key = key(array_slice($request->route()->parametersWithoutNulls(),
-1, 1, TRUE ));
$last_slug = $request->route()->parametersWithoutNulls()[$last_slug_key];
}
https://laravel.com/api/5.4/Illuminate/Routing/Route.html#method_parametersWithoutNulls