Laravel 组件

低功耗模式下的看门狗使用 最近用国产芯片AT32在做一个低功耗的项目,为了实现低功耗模式下的定时唤醒,我选择的是使用相对比较简单的看门狗来做,下面就分享一下使用过程~ 为了最大限度的降低功耗,我用的是待机模式,先看看几种低功耗模式以及唤醒的区别: 而看门狗AT32提供了两种,分别是独立看门狗(IWDG)和窗口看门狗(WWDG),其区别大概有以下几点: 1、独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效;窗口看门狗由从 APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常 阅读详情

Laravel 组件

创建组件命令

php artisan make:component Alert
make:component 命令还将为组件创建视图模板。视图将放在 resources/views/components 目录中。为自己的应用程序编写组件时,组件会在 app/View/components 目录和 resources/views/components 目录中自动发现,因此通常不需要进一步的组件注册。

也可以在子目录中创建组件:

php artisan make:component Forms/Input
上面的命令将在 App\View\Components\Forms 目录中创建一个 Input 组件,该视图将放在 resources/views/Components/Forms 目录中。

渲染组件

要显示组件,可以在其中一个 Blade 模板中使用 Blade 组件标记。Blade 组件标记以字符串 x- 开头,后跟组件类的蛇形名称:
<x-alert/> 或者 <x-alert></x-alert>
<x-user-profile/> 或者 <x-user-profile/> </x-user-profile>
如果组件类嵌套在 App\View\Components 目录的更深处,则可以使用 . 字符表示目录嵌套。例如,如果我们假设一个组件位于 App\View\Components\Forms\Input.php ,我们可以这样处理:
<x-forms.input/>

给组件传递数据

可以使用 HTML 属性将数据传递给 Blade 组件。硬编码、原始值可以使用简单的 HTML 属性字符串传递给组件。PHP 表达式和变量应通过使用 : 字符作为前缀的属性传递给组件:
<x-alert type="error" :message="$message"/>

类似于 VUE 组件语法

你应该在组件类的构造函数中定义组件所需的数据。组件上的所有公共属性将自动提供给组件的视图。不必从组件的 render 方法将数据传递到视图。以下是app/View/components目录下的Alert.php文件。

<?php

namespace App\View\Components;

use Illuminate\View\Component;

class Alert extends Component
{
    /**
     * The alert type.
     *
     * @var string
     */
    public $type;

    /**
     * The alert message.
     *
     * @var string
     */
    public $message;

    /**
     * 创建组件实例
     *
     * @param  string  $type
     * @param  string  $message
     * @return void
     */
    public function __construct($type, $message)
    {
        $this->type = $type;
        $this->message = $message;
    }

    /**
     * 将一个视图或者字符串传递给组件用于渲染
     *
     * @return \Illuminate\View\View|\Closure|string
     */
    public function render()
    {
        return view('components.alert');
    }
}

渲染组件时,可以通过按名称回显变量来显示组件公共变量的内容:

<div class="alert alert-{{ $type }}">
    {{ $message }}
</div>
驼峰命名

应使用 camelCase 指定组件构造函数参数,而在 HTML 属性中引用参数名称时应使用 kebab-case。例如,给定以下组件构造函数:

/**
 * 创建组件实例
 *
 * @param  string  $alertType
 * @return void
 */
public function __construct($alertType)
{
    $this->alertType = $alertType;
}

$alertType 参数可以使用如下所示的方式接受数据:
<x-alert alert-type="danger" />

访问组件类中的属性和插槽

Blade 组件还允许你访问类的 render 方法中的组件名称、属性和插槽。但是,为了访问这些数据,应该从组件的 render 方法返回闭包。闭包将接收一个 $data 数组作为它的唯一参数。此数组将包含几个元素,这些元素提供有关组件的信息:

/**
 * 获取表示组件的视图/内容
 *
 * @return \Illuminate\View\View|\Closure|string
 */
public function render()
{
    return function (array $data) {
        // $data['componentName'];
        // $data['attributes'];
        // $data['slot'];
                 return 'components.alert';

        return '<div>Components content</div>';

        return <<<'blade'
                <div class="alert alert-danger">
                    {{ $message }}
                </div>
            blade;
    };
}

组件传递的数据无法修改,修改数据可以在构造函数中修改。

闭包应该返回一个字符串。如果返回的字符串与现有视图相对应,则将呈现该视图;否则,返回的字符串将作为内联 Blade 视图进行计算。

插槽

通常需要通过 「插槽」 将其他内容传递给组件。通过回显 $slot 变量来呈现组件插槽。为了探索这个概念,我们假设 alert 组件具有以下内容: 类似 VUE

/resources/views/components/alert.blade.php

<div class="alert alert-danger">
    {{ $slot }}
</div>

我们可以通过向组件中注入内容将内容传递到 slot :

<x-alert>
    <strong>Whoops!</strong> Something went wrong!
</x-alert>

有时,组件可能需要在组件内的不同位置渲染多个不同的插槽。让我们修改警报组件以允许注入 「标题」插槽:

<span class="alert-title">{{ $title }}</span>

<div class="alert alert-danger">
    {{ $slot }}
</div>

可以使用 x-slot 标记定义命名插槽的内容。任何不在显式 x-slot 标记中的内容都将传递给 $slot 变量中的组件:

<x-alert>
    <x-slot name="title">
        Server Error
    </x-slot>

    <strong>Whoops!</strong> Something went wrong!
</x-alert>
作用域插槽

如果你使用过诸如 Vue 之类的 JavaScript 框架,那么你可能熟悉 「作用域插槽」,它允许你从插槽中的组件访问数据或方法。通过在组件上定义公共方法或属性,并通过 $component 变量访问插槽中的组件,可以在 Laravel 中实现类似的行为。在本例中,我们假设 x-alert 组件在其组件类上定义了一个公共的 formatAlert 方法:

<x-alert>
    <x-slot name="title">
        {{ $component->formatAlert('Server Error') }}
    </x-slot>

    <strong>Whoops!</strong> Something went wrong!
</x-alert>
内联组件视图
/**
 * 获取表示组件的视图/内容。
 *
 * @return \Illuminate\View\View|\Closure|string
 */
public function render()
{
    return <<<'blade'
        <div class="alert alert-danger">
            {{ $slot }}
        </div>
    blade;
}
使用组件布局

之前我们使用模板继承的方式进行布局。现在我们学习了组件 接下来我们使用组件的方式的来进行布局。

resources/views/components/layout.balde.php

<html>
    <head>
        <title>{{ $title ?? 'Todo Manager' }}</title>
          <style>
        .header{
            width: 100%;
            height: 100px;
            background-color:#f90;
        }
        .main{
            display: flex;
            width: 100%;
            min-height:500px;
        }
        .ce{
            width: 300px;
            background-color:pink;
        }
        .content{
            width: 100%;
            background-color:#cbd5e0;
        }
    </style>
    </head>

    <body>
      <header class="header"></header>
    <div class="main">
        <div class="ce">
            我是侧边栏
        </div>
        <div class="content">
                        {{ $slot }}
        </div>
    </div>
    </body>
</html>
应用布局组件

一旦定义了 layout 组件,我们就可以创建一个使用该组件的 Blade 视图。在本例中,我们将定义一个显示任务列表的简单视图:
resources/views/user.blade.php

<x-layout>
       <div>
                <h1>我是个人中心</h1>
        </div>
</x-layout>

请记住,注入到组件中的内容将提供给 layout 组件中的默认 $slot 变量。正如你可能已经注意到的,如果提供了 $title 插槽,那么我们的 layout 也会尊从该插槽;否则,将显示默认的标题。我们可以使用 x-slot 插入标题

<x-layout>
    <x-slot name="title">
        Custom Title
    </x-slot>

    @foreach ($tasks as $task)
        {{ $task }}
    @endforeach
</x-layout>
Laravel Blade 组件的精彩之处 Laravel 中,Blade 是一种强大而灵活的模板引擎,它提供了丰富的功能来简化视图层的开发。而 Blade 组件更是在 Blade 的基础上提供了一种组件化的方式,使得视图层的重用性和可维护性大大提高。在本文中,我将分享几个在 Laravel 中非常酷的 Blade 组件,展示它们的用法和源代码。这些组件展示了 Blade 组件的强大功能,使开发者能够更轻松地构建可重用和可维护的视图层代码。FormInput 组件是一个表单输入组件,它封装了表单输入元素的常见属性和样式,并提供了错误提示功能。 阅读详情

相关推荐

YOLOv11在STM32H7上的MCU部署实战:基于CMSIS-NN的高效推理实现

嵌入式AI与MCU部署技术解析 本文系统介绍了基于STM32H7微控制器的YOLOv11模型部署方案。主要内容包括: 边缘计算背景下MCU的AI部署优势与挑战,重点分析了STM32H7平台特性 YOLOv11模型的结构优化,包括E-ELAN骨干网络和Meta-ACON激活函数等改进 CMSIS-NN加速库的架构原理,在STM32H743上可实现5.4倍卷积加速 完整的开发环境搭建流程,涵盖硬件选型、工具链配置和模型转换 模型优化关键技术,包括int8量化、剪枝和内存占用优化等 实验表明,该方案在保持模型精度

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 809

好用的laravel excel组件

php excel

何止七八的博客 1918

rinex文件介绍.rar_IGS钟差文件_rinex文件_星历文件_精密星历 sp3_精密星历clk

查阅相关资料,自己总结IGS精密星历文件,例如clk钟差文件,sp3文件 每行数据代表什么

Laravel 博客开发|使用 Blade 设置布局模版

在 Web 开发中会遇到许多页面布局很相似,甚至许多页面的头部和底部显示都是一样的,比如我的这个博客应用,前端所有展示页面的头部和底部就是一样的。如果每个页面都要重复写这些代码,会导致代码不够灵活、简洁,当然谁也不愿意做重复工作。为了使后面的开发更容易,更好的维护代码,需要设置一个模版,这个模版包含一些通用的视图,页面只要继承这个模版,就拥有模版里面的内容。LaravelBlade 模板支持继承,这意味多个子视图可以共用父视图提供的视图模板,接下来就是使用 Blade 设置模版。...

SevDot 800

Laravel Blade组件:构建动态视图的神兵利器

组件类通常包含一个render方法,该方法返回组件Blade视图路径。创建自定义Blade指令来使用组件Laravel Blade组件是构建现代化、组件化Web应用的强大工具。通过本文的介绍,你应该对Blade组件有了更深入的理解,包括其概念、优势以及如何创建和使用Blade组件。记住,合理利用Blade组件,可以使你的Laravel应用更加模块化、可维护性和扩展性。本文详细介绍了Laravel Blade组件的概念、优势以及具体的创建和使用方法。

2401_85742452的博客 601

Laravel 7 新特性-组件以及插槽的简单用法

Laravel 7 很重要一个更新就是 Blade 组件标签 & 优化 其实组件 和 布局 layout 有点儿类似,我们可以抽离相同的代码块,封装成一个组件。以前我们是封装成多个 layout 来进行布局。这个功能和 Vue 极度类似,很大程度上借鉴了 Vue.js。 ok,废话不多说,...

hedeqiang 1171

laravel blade模板引擎组件使用

laravel balde模板引擎使用组件

萧然如尘 584

laravel组件开发

composer的目录结构: vendor/ ├── .editorconfig # 编辑器配置文件,比如缩进大小、换行模式等 ├── .gitattributes # git 配置文件,可以设计导出时忽略文件等 ├── .gitignore # git 忽略文件配置列表 ├── .php_cs # PHP-CS-Fixer 配置文件 ├── README.md ├── composer.json...

jilangyu123的博客 861

Laravel Bootstrap 组件项目推荐

Laravel Bootstrap 组件项目推荐 项目基础介绍和主要编程语言 Laravel Bootstrap 组件项目是一个开源的 PHP 库,旨在简化在 Laravel 框架中使用 Bootstrap 4 组件的过程。该项目的主要编程语言是 PHP,并且它充分利用了 LaravelBlade 模板引擎来实现组件的渲染。 项目核心功能 该项目的主要功能是将 Bootstrap 4 的 U...

gitblog_00397的博客 492

Laravel表单组件指南

Laravel表单组件指南 1. 项目介绍 Laravel表单组件是一个专为加速Laravel框架下基于Tailwind CSS(支持v1.0至v2.0)及Bootstrap 4/5构建表单过程而设计的开源工具包。它不仅提供常见的表单元素,而且内置了验证功能、旧值保持、以及对wire:model的支持,非常适合与Livewire一起使用。这套装件优化了开发者体验,允许更快速地创建美观且功能丰富的表...

gitblog_00698的博客 505

基于Laravel自定义测试组件

一、composer的介绍和laravel的关系 laravel开发模式就是一种组件化的开发模式,把整个框架拆分为不同的单独的零件,每一个零件实际上就是一个单独的组件,每一个组件你都可以在composer的资源包中查中到 然后可以在 https://packagist.org 查找到这个组件 composer工作原理 它主要由三个部分组成:命令行工具、包仓库、代码库: packag...

weixin_44963187的博客 474

Laravel 如何在blade文件中使用Vue组件

Laravel 如何在blade文件中使用Vue组件 1. 安装laravel/ui依赖包 composer require laravel/ui2.生成vue基本脚手架 php artisan ui react 系统还提供了非常便捷的auth脚手架,带登录注册。 php artisan ui react --auth3.组件位置 Vue组件ExampleComponent.vue将被放置在resources/js/components目录中。ExampleComponent.vue文件是单个文件Vue组

wjcms的博客 1569

php laravel组件,Laravel 自定义视图组件

Laravel 的视图合成器可将数据与指定视图绑定在一起,避免了重复编写代码。View::composer('profile', 'App\Http\View\Composers\ProfileComposer');由于数据的生成和渲染是分开进行的,理解起来不够直观。因此,可以采用视图组件的方式将两者进行封装。...

weixin_39853210的博客 333

推荐使用:Blade UI Kit - Laravel 视图组件

在开发优雅的 Laravel 应用时,你是否渴望拥有一套简洁而强大的视图组件工具?那么,让我们一起探索 Blade UI Kit,一个专为 LaravelBlade 模板引擎设计的渲染无状态组件集。 ## 项目介绍 Blade UI Kit 提供了一组灵活易用的组件,让你在 Laravel 项目中构建界面时可以更加便捷高效。这个库将[TALL stack](https://tallsta

gitblog_00018的博客 587

深入探索Laravel框架中的Blade模板引擎

BladeLaravel框架自带的模板引擎,它允许你使用纯PHP代码来编写HTML模板。Blade的语法非常简洁,它使用双大括号{{ }}来输出数据,使用三组大括号!!!来输出未转义的HTML内容,以及使用符号来定义控制结构,比如@foreach@if等。

2402_85762143的博客 1164

Laravel 组件(Component)使用的一点心得

在项目开发中,多数时间可能很难会想到使用Component。 通过阅读Laravel文档,我们能够发现组件能够完成的效果主要是两方面 引入大段的HTML代码 向引入的HTML代码中传递PHP变量或表达式。 但是单纯的引入HTML,模板继承可以做到,include也可以做到。 引入+传递变量,include也可以做到,甚至进行简单的处理也是可以的。 那么组件的相比于include,更适合的应用场景是什么呢? 在编写权限列表页的时候,因为需要用到多级分类表格,尝试使用了组件 下图是多级分类未展开时的表格

qq_35923199的博客 1623

Laravel模块化管理组件

使用模块来管理大型Laravel项目 其中会遇到许多错误,这些错误来源都是Laravel版本改变使得一些函数被弃用了,解决过程用到了以下网站: Laravel 6.x版本辅助函数 Laravel 5.1版本辅助函数 laravel5.8版本后将fire()改成了dispatch() ...

Ruanes的博客 378

Laravel视图中的<x-xxx> Blade组件详解

Laravel Blade组件解析:<x-core::form.field>示例详解 本文深入解析了Laravel Blade组件的工作原理,以<x-core::form.field>为示例,阐述了以下要点: 组件调用机制:讲解了<x-xxx>标签作为Blade组件语法糖的作用,包括命名空间映射(core::)和组件路径定位(form.field) 参数传递方式:对比了静态属性(name="username")和动态属性(:showLabel=&quo

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 1063

如何在 Ionic2/Angular2 中使用 EventSource Polyfill:完整指南

EventSource Polyfill 是一个强大的工具,它为不原生支持 W3C EventSource 规范的浏览器提供了完整的实现。本指南将向你展示如何在 Ionic2/Angular2 项目中轻松集成和使用这个 polyfill,实现高效的服务器推送功能。 ## 为什么需要 EventSource Polyfill? EventSource(服务器发送事件)是一种让服务器能够主动向客户

gitblog_00091的博客 426

Laravel 的核心组件一共包含哪些部分?使用场景是什么?底层原理是什么?

Laravel 的核心组件是框架的基础,提供了开发 Web 应用所需的各种功能。

长风破浪会有时的博客 907
上一篇: Markdown学习笔记
下一篇: markdown学习笔记
qvtcxxjs
博客等级 码龄20年 3粉丝 · 6原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值