如何在Laravel 5中访问刀片中的URL段?

kyo*_*kyo 36 php laravel blade laravel-5

我有一个网址: http://localhost:8888/projects/oop/2

我想访问第一段 - > projects

我试过了

<?php echo $segment1 = Request::segment(1); ?>

刷新页面时,我的视图中看不到任何内容.


任何帮助/建议将不胜感激

Ani*_*ngh 78

试试这个

{{ Request::segment(1) }}
Run Code Online (Sandbox Code Playgroud)

  • @ihue 不是。Blade 会在内部将“{{”转换为“&lt;?php echo”,将“}}”转换为“;?&gt;”。因此,它与您正在做的事情完全相同,并且效果也一样。 (2认同)

Dou*_*leJ 7

双花括号通过Blade处理 - 而不仅仅是普通的PHP.此语法基本上回显了计算值.

{{ Request::segment(1) }} 
Run Code Online (Sandbox Code Playgroud)


Muh*_*mad 6

以下是如何通过全局request辅助函数来做到这一点。

{{ request()->segment(1) }}

注意: request()返回类的对象Request


Joe*_*ind 6

如果您不确定路径长度,这是获取第一段或最后一段的简单方法。

$segments = request()->segments();
$last  = end($segments);
$first = reset($segments);
Run Code Online (Sandbox Code Playgroud)


Sof*_*per 5

基于 Laravel 5.7 及以上

获取当前 URL 的所有段:

$current_uri = request()->segments();

postshttp://example.com/users/posts/latest/获取片段

注意:段是从索引 0 开始的数组。数组的第一个元素在 url 的 TLD 部分之后开始。所以在上面的 url 中,segment(0) 是users,segment(1) 是posts

//get segment 0
$segment_users = request()->segment(0); //returns 'users'
//get segment 1
$segment_posts = request()->segment(1); //returns 'posts'
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,segment 方法仅适用于当前 URL ( url()->current())。所以我设计了一个方法来通过克隆方法来处理以前的 URL segment()

public function index()
{
    $prev_uri_segments = $this->prev_segments(url()->previous());
}

 /**
 * Get all of the segments for the previous uri.
 *
 * @return array
 */
public function prev_segments($uri)
{
    $segments = explode('/', str_replace(''.url('').'', '', $uri));

    return array_values(array_filter($segments, function ($value) {
        return $value !== '';
    }));
}
Run Code Online (Sandbox Code Playgroud)