如何在Laravel 4中获取@if语句(刀片)中的当前URL?

时间:2013-07-11 10:36:44

标签: laravel laravel-4 laravel-blade

我正在使用Laravel 4.我想使用Laravel的Blade模板引擎在视图中访问@if条件内的当前URL,但我不知道该怎么做。

我知道可以使用类似<?php echo URL::current(); ?>的内容来完成,但在@if刀片语句中无法实现。

有什么建议吗?

29 个答案:

答案 0 :(得分:312)

您可以使用:Request::url()获取当前网址,以下是一个示例:

@if(Request::url() === 'your url here')
    // code
@endif

Laravel提供了一种方法来查明URL是否与模式匹配

if (Request::is('admin/*'))
{
    // code
}

查看相关文档以获取不同的请求信息:http://laravel.com/docs/requests#request-information

答案 1 :(得分:79)

您还可以使用Route::current()->getName()检查路线名称。

示例:routes.php

Route::get('test', ['as'=>'testing', function() {
    return View::make('test');
}]);

查看:

@if(Route::current()->getName() == 'testing')
    Hello This is testing
@endif

答案 2 :(得分:58)

也许你应该试试这个:

<li class="{{ Request::is('admin/dashboard') ? 'active' : '' }}">Dashboard</li>

答案 3 :(得分:42)

我这样做:

@if (Request::path() == '/view')
    // code
@endif

其中&#39; / view&#39;是routes.php中的视图名称。

答案 4 :(得分:22)

这对我在 Laravel 5.2 中的bootstrap主动导航类有所帮助:

let getIntsAsUints (list : List<int>) =
    list |> Seq.ofType<uint32>

Script.fsx(21,13): error FS0001: The type 'List<int>' is not compatible with the type 'seq<Attribute>'

答案 5 :(得分:20)

要在current url视图中获取blade,您可以使用以下内容

<a href="{{url()->current()}}">Current Url</a>

因此,您可以使用以下代码进行比较,

@if (url()->current() == 'you url')
    //stuff you want to perform
@endif

答案 6 :(得分:16)

有点旧,但这适用于L5:

<li class="{{ Request::is('mycategory/', '*') ? 'active' : ''}}">

这会捕获/ mycategory和/ mycategory / slug

答案 7 :(得分:13)

Laravel 5.4

全球职能

@if (request()->is('/'))
    <p>Is homepage</p>
@endif

答案 8 :(得分:12)

我个人不会尝试在视图中抓取它。我在Laravel并不令人惊讶,但我想你需要将你的路线发送到控制器,然后在控制器内,将变量(通过数组)传递到你的视图中,使用$url = Request::url();之类的东西

无论如何这样做的一种方式。

编辑:实际上看看上面的方法,可能是一种更好的方法。

答案 9 :(得分:9)

带有引导程序的简单导航栏可以完成:

    <li class="{{ Request::is('user/profile')? 'active': '' }}">
        <a href="{{ url('user/profile') }}">Profile </a>
    </li>

答案 10 :(得分:8)

最简单的方法是使用:Request::url();

但这是一个复杂的方式:

URL::to('/').'/'.Route::getCurrentRoute()->getPath();

答案 11 :(得分:8)

有两种方法可以做到:

<li{!!(Request::is('your_url')) ? ' class="active"' : '' !!}>

<li @if(Request::is('your_url'))class="active"@endif>

答案 12 :(得分:7)

将此代码设置为自动应用于您需要在Laravel项目中使用<li>库的每个HTMLBuilder +

<script type="text/javascript">
    $(document).ready(function(){
        $('.list-group a[href="/{{Request::path()}}"]').addClass('active');
    });
</script>

答案 13 :(得分:7)

您应该尝试以下操作:

<b class="{{ Request::is('admin/login') ? 'active' : '' }}">Login Account Details</b>

答案 14 :(得分:6)

使用以下代码,您将获得url

例如您的网址,例如https//www.example.com/testurl?test

echo url()->current();
Result : https//www.example.com/testurl

echo url()->full();
Result: https//www.example.com/testurl?test

答案 15 :(得分:5)

使用路径

在Laravel中编写if和else的另一种方法
 <p class="@if(Request::is('path/anotherPath/*')) className @else anotherClassName @endif" >
 </p>

希望有所帮助

答案 16 :(得分:4)

而不是使用 URL :: path()来检查您当前的路径位置,您可能需要考虑 Route :: currentRouteName()以防万一如果您更新路径,则无需浏览所有网页以再次更新路径名称。

答案 17 :(得分:4)

您可以使用以下代码获取当前网址:

echo url()->current();

echo url()->full();

我是从Laravel文档中得到的。

答案 18 :(得分:2)

对我来说,效果最好:

class="{{url()->current() == route('dashboard') ? 'bg-gray-900 text-white' : 'text-gray-300'}}"

答案 19 :(得分:2)

{
    method: 'POST',
    path: '/api/v1/userlevel',
    config: {
      handler: (request, reply) => {
        const userlevel = new Userlevel(request.payload);
        userlevel.save((err) =>{
          if(err) {
            return reply({
              status: 400,
              message: err.message
            }).code(400);
            // logger.error(err);
          }
          // logger.debug(reply);
          return reply(userlevel).code(201);
        });
      },
       validate: {
         payload: {
           group_id: Joi.string().error(new Error('custom message')),
           name: Joi.string().error(new Error('custom message')),
           status: Joi.string().error(new Error('custom message')),
           index_id: Joi.number().error(new Error('custom message')),
           device_id: Joi.string().error(new Error('custom message')),
           created_at: Joi.string().error(new Error('custom message')),
           updated_at: Joi.string().error(new Error('custom message')),
           sys_version: Joi.string().error(new Error('custom message'))
         }
       }
    }
  }

答案 20 :(得分:1)

对于命名路线,我使用:

@if(url()->current() == route('routeName')) class="current" @endif

答案 21 :(得分:1)

class="nav-link {{ \Route::current()->getName() == 'panel' ? 'active' : ''}}"

答案 22 :(得分:0)

试试这个:

&#13;
&#13;
<li class="{{ Request::is('Dashboard') ? 'active' : '' }}">
    <a href="{{ url('/Dashboard') }}">
	<i class="fa fa-dashboard"></i> <span>Dashboard</span>
    </a>
</li>
&#13;
&#13;
&#13;

答案 23 :(得分:0)

尝试一下:

@if(collect(explode('/',\Illuminate\Http\Request::capture()->url()))->last() === 'yourURL')
    <li class="pull-right"><a class="intermitente"><i class="glyphicon glyphicon-alert"></i></a></li>
@endif

答案 24 :(得分:0)

有许多方法可以实现,其中一个是我总是使用

 Request::url()

答案 25 :(得分:0)

最简单的方法是

<li class="{{ Request::is('contacts/*') ? 'active' : '' }}">Dashboard</li>

此共谋捕获联系人/,联系人/创建,联系人/编辑...

答案 26 :(得分:0)

在Blade文件中

@if (Request::is('companies'))
   Companies name 
@endif

答案 27 :(得分:0)

对于 Laravel 5.5 +

setup(){
  const locale = inject('locale')
  console.log('locale from inject:',locale.value)
  watch(
    () => locale,
    (...args)=>{
      //never logs
      console.log('args:',args)
    }
  );
},

答案 28 :(得分:-1)

尝试这种方式:

<a href="{{ URL::to('/registration') }}">registration </a>