是否有可能使用{{..}}和{!!部分转义输出字符串。 .. !!}在Laravel中

问题描述 投票:0回答:2

我正在使用Laravel 5.7。 Route在未转义的{!! .. !!}内部无法正常工作。查看正在渲染为href='{{url('/')}}'%7B%7Burl(部分。在我的Controller中,我有以下代码:

Conroller

$navbar = '';
foreach($navs as $nav){
  $navbar .= "
   <li class='nav-item'>
    <a class='nav-link' href='{{url('/')}}'>".$nav->name."</a>
   </li>
  ";
}
return view('front/index', ['navbar' => $navbar]);

在我的blade文件中,我有以下代码:

刀片

<ul>
  {!! $navbar !!}
</ul>

[{{url('/')}}部分除外,其他都很好。在我的Blade文件中,{{url('/')}}呈现为%7B%7B(url之类的东西。我知道为什么会这样。但是我的问题是,有什么方法可以使{{url('/')}}工作。

php laravel escaping laravel-blade laravel-5.7
2个回答
0
投票
似乎您将PHP和Blade混合使用。试试这个:

$navbar = ''; foreach($navs as $nav){ $navbar .= "<li class='nav-item'>"; $navbar .= "<a class='nav-link' href=' ".url('/')." '>".$nav->name."</a>"; $navbar .= "</li>"; } return view('front/index', ['navbar' => $navbar]);

甚至防止引号引起的错误:

$navbar = ''; $url = url('/'); foreach($navs as $nav){ $navbar .= "<li class='nav-item'>"; $navbar .= "<a class='nav-link' href=' ".$url." '>".$nav->name."</a>"; $navbar .= "</li>"; } return view('front/index', ['navbar' => $navbar]);


0
投票
[我认为让刀片处理所有HTML呈现是最好的主意,将$navbar移至刀片,如下所示:

您的控制器:

return view('front/index', ['navs' => $navs]);

您的刀片文件:

<ul> @foreach($navs as $nav) <li class="nav-item"> <a class="nav-link" href="{{ url('/') }}">{{ $nav->name }}</a> </li> @endforeach </ul>

© www.soinside.com 2019 - 2024. All rights reserved.