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

Laravel 的视图合成器可将数据与指定视图绑定在一起,避免了重复编写代码。View::composer('profile', 'App\Http\View\Composers\ProfileComposer');

由于数据的生成和渲染是分开进行的,理解起来不够直观。因此,可以采用视图组件的方式将两者进行封装。<?php

namespace App\ViewComponents;

use Illuminate\Contracts\Support\Htmlable;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\View;

class ExampleComponent implements Htmlable

{

private $color;

private $request;

public function __construct(Request $request, string $color)

{

$this->color = $color;

$this->request = $request;

}

public function toHtml()

{

return View::make('example')

->with('color', $this->color)

->render();

}

}

在视图中使用{{ app()->makeWith(App\ViewComponents\ExampleComponent::class,['color' => 'green'])->toHtml() }}

封装指令Blade::directive('render', function ($expression) {

list($class, $params) = explode(',', $expression, 2);

$class = "App\\ViewComponents\\".trim($class, '\'" ');

return "<?php echo app()->makeWith('$class', $params)->toHtml(); ?>";

});

使用指令@render('ExampleComponent', ['color' => 'green'])

参考资料spatie/laravel-view-components: A better way to connect data with view rendering in Laravel

Introducing View Components in Laravel, an alternative to View Composers - Laravel News

更多Laravel相关技术文章,请访问Laravel框架入门教程栏目进行学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值