Home > PHP Framework > Laravel > body text

Laravel custom view component

藏色散人
Release: 2019-10-29 13:49:43
forward
3229 people have browsed it

Laravel 的视图合成器可将数据与指定视图绑定在一起,避免了重复编写代码。

View::composer('profile', 'App\Http\View\Composers\ProfileComposer');
Copy after login

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

<?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(&#39;example&#39;)
            ->with(&#39;color&#39;, $this->color)
            ->render();
    }
}
Copy after login

在视图中使用

{{ app()->makeWith(App\ViewComponents\ExampleComponent::class,[&#39;color&#39; => &#39;green&#39;])->toHtml() }}
Copy after login

封装指令

Blade::directive(&#39;render&#39;, function ($expression) {
    list($class, $params) = explode(&#39;,&#39;, $expression, 2);
    $class = "App\\ViewComponents\\".trim($class, &#39;\&#39;" &#39;);
    return "<?php echo app()->makeWith(&#39;$class&#39;, $params)->toHtml(); ?>";
});
Copy after login

使用指令

@render(&#39;ExampleComponent&#39;, [&#39;color&#39; => &#39;green&#39;])
Copy after login

参考资料

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
Copy after login

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

The above is the detailed content of Laravel custom view component. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template