【问题标题】:Laravel : How to check dynamic url using Request::path()Laravel:如何使用 Request::path() 检查动态 url
【发布时间】:2018-01-15 20:40:05
【问题描述】:

我试图显示一个基于 url 的搜索框意味着特定路线它将显示搜索框,否则它不会显示。为此,我使用了 Request::path() 。但问题是对于某些路线它不起作用。 假设我有两条路线,例如

Route::get('products','abcontroller@index');
Route::get('product/{name}','abcontroller@searchProduct');

现在如果我使用以下代码:

@if(Request::path() == 'products' || Request::path() == 'product/{name}')
  // something print
@endif

对于products 路线,我可以看到搜索框,但对于product/{name},我看不到.. 我该如何解决这个问题?

【问题讨论】:

  • 你检查过Request::path()的值吗?
  • 您可以从here获得合适的解决方案!

标签: php laravel laravel-5 laravel-blade


【解决方案1】:
Route::get('products',['as' => 'product.index', 'uses' => 'abcontroller@index']);
Route::get('product/{name}',['as' => 'product.name', 'uses' => 'abcontroller@searchProduct']);

使用

@if(Route::is('product.*')
// something print
@endif

希望能帮到你

【讨论】:

    【解决方案2】:

    更好的办法是通过控制器本身来处理这个问题,将值传递给视图。这将有助于更好地封装,因为您的布局不需要知道任何路线。

    如果您默认显示搜索栏,请选择 not 如果存在值则显示它。如果仅在某些页面显示,则仅在值实际存在时显示。

    【讨论】:

    • 我直接通过Ruquest::url()在view中使用了
    • 在我看来,URL 不应该用作任何页面的标识符。尝试在您的视图中使用@isset($showSearchBox) 来检查它是否存在,并在应该显示带有搜索框的视图的任何控制器操作中传递showSearchBoxtrue 值(或任何东西)。或者,就像我之前说的,如果你经常展示它,就让它$hideSearchBox
    【解决方案3】:

    使用这个:

    Route::get('product/{name}',
        ['as' => 'product.name', 'uses' => 'abcontroller@searchProduct']);
    @if(Route::is('product/*')
     //your Code
    @endif
    

    【讨论】:

      猜你喜欢
      • 2017-08-08
      • 2010-11-02
      • 2017-09-16
      • 2013-05-20
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2020-04-16
      • 2021-04-28
      相关资源
      最近更新 更多