视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
分享几个 Laravel 7 中很酷的 Blade 组件
2020-11-27 14:04:50 责编:小采
文档


表单按钮

开发一个应用时,如果您希望重定向并且做一些其他操作时,不能使用简单的链接。GET 请求很容易受到 CSRF 攻击。

相反,您应该使用其他 HTTP 请求方式,使用表单和 CSRF 验证。 下面是一个在表单中生成按钮的 FormButton 组件。

{{-- content of formButton.blade.php --}}
<form method="POST" action="{{ $action }}">
 @csrf
 @method($method ?? 'POST')
 <button
 type="submit"
 class="{{ $class ?? '' }}"
 >
 {{ $slot }}
 </button>
</form>

您可以像这样使用它:

// perform an action
<x-form-button :action="route('doSomething')">
 Do something
</x-form-button>
// perform an action with another HTTP verb
<x-form-button :action="route('model.delete', $model)" method="delete">
 Delete model
</x-form-button>

导航栏

几乎任何应用程序都需要显示某种导航,比如菜单和选项卡。这些导航链接是动态的,这样用户就可以知道自己在应用程序的哪个部分。

下面是可以展示链接的 navigationLink 组件。当其以当前请求的 URL 开始时,它会自动将自身设置为活动状态。

{{-- content of navigationLink.blade.php --}}
<li class="{{ \Illuminate\Support\Str::startsWith(request()->url(), $href) ? 'active' : '' }}">
 <a href="{{ $href }}" @isset($dataDirtyWarn) data-dirty-warn @endisset>
 {{ $slot }}
 </a>
</li>

这里是如何在 mailcoach.app 中使用它的。

 <nav class="tabs">
 <ul>
 <x-navigation-item :href="route('mailcoach.emailLists.subscribers', $emailList)">
 <x-icon-label icon="fa-users" text="Subscribers" :count="$emailList->subscribers()->count() ?? 0" />
 </x-navigation-item>
 <x-navigation-item :href="route('mailcoach.emailLists.tags', $emailList)">
 <x-icon-label icon="fa-tag" text="Tags" />
 </x-navigation-item>
 <x-navigation-item :href="route('mailcoach.emailLists.segments', $emailList)">
 <x-icon-label icon="fa-chart-pie" text="Segments" />
 </x-navigation-item>
 <x-navigation-item :href="route('mailcoach.emailLists.settings', $emailList)">
 <x-icon-label icon="fa-cog" text="Settings" />
 </x-navigation-item>
 </ul>
 </nav>

这就是渲染的方法。

表单元素

Blade 组件会渲染出自适应的表单元素。我们来看一下 textField 组件在 Mailcoach 中的用法。

<div class="form-row">
 @if($label ?? null)
 <label class="{{ ($required ?? false) ? 'label label-required' : 'label' }}" for="{{ $name }}">
 {{ $label }}
 </label>
 @endif
 @error($name)
 <p class="form-error" role="alert">{{ $message }}</p>
 @enderror
 <input
 autocomplete="off"
 type="{{ $type ?? 'text' }}"
 name="{{ $name }}"
 id="{{ $name }}"
 class="input"
 placeholder="{{ $placeholder ?? '' }}"
 value="{{ old($name, $value ?? '') }}"
 {{ ($required ?? false) ? 'required' : '' }}
 >
</div>

正如你所看到的一样,它渲染了标签、表单字段和可能的错误。这就是它的用法。

<x-text-field label="Name" name="name" required />

下载本文
显示全文
专题