是否可以使用 {{ .. }} 和 {!! .. !!} 在 Laravel
Is It Possible to Partially Escape the output string using {{ .. }} and {!! .. !!} in Laravel
我正在使用 Laravel 5.7。 Route
在未转义的 {!! .. !!}
中不起作用。查看呈现为 %7B%7Burl(
的 href='{{url('/')}}'
部分。在我的 Controller
中,我有以下代码:
控制器
$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
文件中,我有以下代码:
Blade
<ul>
{!! $navbar !!}
</ul>
除了 {{url('/')}}
部分,其他都很好。在我的 Blade
文件中,{{url('/')}}
呈现为类似 %7B%7B(url
的内容。我明白为什么会这样。但我的问题是,有没有办法让 {{url('/')}}
工作。
看起来你混合了 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]);
当然,这个答案旨在解决您的具体问题。我建议也看看其他答案。
我认为让 blade 处理所有 html 渲染是最好的主意,将 $navbar
移动到您的 blade,如下所示:
您的控制器:
return view('front/index', ['navs' => $navs]);
您的 blade 文件:
<ul>
@foreach($navs as $nav)
<li class="nav-item">
<a class="nav-link" href="{{ url('/') }}">{{ $nav->name }}</a>
</li>
@endforeach
</ul>
在 Laravel 中,我们不在控制器上执行前端逻辑,这是初学者通常会犯的常见错误,请确保所有与前端相关的内容都保留在 blade 文件或 "VIEW"
我建议的是这个..
控制器文件(controller file)
return view('front.index', ['navbar' => $navs]);
front.index 文件(查看文件)
<ul>
@for($navbar as $nav)
<li class='nav-item'>
<a class='nav-link' href='{{ url('/') }}'>{{ $nav->name }}</a>
</li>
@endfor
</ul>
我正在使用 Laravel 5.7。 Route
在未转义的 {!! .. !!}
中不起作用。查看呈现为 %7B%7Burl(
的 href='{{url('/')}}'
部分。在我的 Controller
中,我有以下代码:
控制器
$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
文件中,我有以下代码:
Blade
<ul>
{!! $navbar !!}
</ul>
除了 {{url('/')}}
部分,其他都很好。在我的 Blade
文件中,{{url('/')}}
呈现为类似 %7B%7B(url
的内容。我明白为什么会这样。但我的问题是,有没有办法让 {{url('/')}}
工作。
看起来你混合了 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]);
当然,这个答案旨在解决您的具体问题。我建议也看看其他答案。
我认为让 blade 处理所有 html 渲染是最好的主意,将 $navbar
移动到您的 blade,如下所示:
您的控制器:
return view('front/index', ['navs' => $navs]);
您的 blade 文件:
<ul>
@foreach($navs as $nav)
<li class="nav-item">
<a class="nav-link" href="{{ url('/') }}">{{ $nav->name }}</a>
</li>
@endforeach
</ul>
在 Laravel 中,我们不在控制器上执行前端逻辑,这是初学者通常会犯的常见错误,请确保所有与前端相关的内容都保留在 blade 文件或 "VIEW"
我建议的是这个..
控制器文件(controller file)
return view('front.index', ['navbar' => $navs]);
front.index 文件(查看文件)
<ul>
@for($navbar as $nav)
<li class='nav-item'>
<a class='nav-link' href='{{ url('/') }}'>{{ $nav->name }}</a>
</li>
@endfor
</ul>