lkozlova/widgets

该包最新版本(1.0.2)没有可用的许可证信息。

Laravel的简单Widgets包

1.0.2 2020-01-21 08:23 UTC

This package is auto-updated.

Last update: 2024-09-21 21:04:31 UTC


README

该包目前正在开发中!!!

这是Laravel的简单Widgets包。它允许使用面向对象(OOP)创建界面元素。

HtmlWidget

它是用于创建HTML的Widget。

生成标签

要生成HTML标签,您应该调用HtmlWidget类的tag()方法

HtmlWidget::tag('p');

然后我们得到这个HTML

<p></p>

tag()可以获取配置数组,允许添加一些属性和值

HtmlWidget::tag('button',[
    'params' => [
        'class' => 'btn',
    ],
    'value' => 'Ok',
]);

生成的HTML

<button class="btn">Ok</button>

组合标签

Widgets返回属于集成Laravel类Illuminate\Support\HtmlString的字符串值。然后您可以将其放置在另一个Widget的值中。例如

{{HtmlWidget::tag('form', [
        'params' => [
            'class' => 'form-inline',
            'method' => 'post',
            'action' => '/users/login',
            'enctype' => 'multipart/form-data',
        ],
        'value' => csrf_field().
                   HtmlWidget::tag('input', [
                       'params' => [
                           'name' => 'password',
                       ]
                   ]).
                   HtmlWidget::tag('button', [
                       'params' => [
                            'type' => 'submit',
                            'class' => 'btn',
                       ],
                       'value' => 'Login'
                   ]),
])}}

生成的HTML

<form class = "form-inline"
      method = "post"
      action = "/users/login"
      enctype = "multipart/form-data">
    <input type="hidden" name="_token" value="tocken will be here">
    <input name = "password"></input>
    <button type = "submit" class = "btn">Login</button>
</form>

如您所注意到的,Widgets通过连接符号'.'连接。

简单标签

如果您不想创建闭合标签,或者使用组合标签对您来说不划算,您可以向方法传递false参数

{{HtmlWidget::tag('form', [
    'params' => [
        ...
        ...
    ], 
],false)}}
@csrf
...
...
{{HtmlWidget::tag('/form')}}

TableWidget

这个Widget允许使用您的模型和集合创建表格。这个Widget非常简单和灵活。它不限制您使用Laravel的模型和集合,为您提供使用自己的对象的机会。要创建表格,请使用table()方法

{{TableWidget::table([
    'params' => [
        'class' => 'table  table-striped',
    ],
    'columns' => [
        'id',
        'status',
        'error_message',
        'event',
    ],
], $collection)}}

要生成表格,您应该将集合的属性传递到配置数组中。列将以这些属性命名

<table class = "table  table-striped">
    <thead>
        <tr>
            <th>id</th>
            <th>status</th>
            <th>error_message</th>
            <th>event</th>
        </tr>
    </thead>
    <tbody>
    ...
    Your collections values
    ...
    </tbody>
</table>

如果您想以其他名称命名列,您可以这样做

{{TableWidget::table([
    'columns' => [
        'id',
        'status',
        [
            'label' => 'Error',
            'attribute' => 'error_message',
        ],
        'event',
    ],
], $collection)}}

您还可以添加任何字符串,而不是属性,甚至包含属性的字符串。这在您想在表格中使用某些Widget时非常有用。为此,您应该使用value而不是attribute,并传递数组value => [(string)$value, (array)$attributes]。您写入的动态变量如下:.'attribute'
查看示例

{{TableWidget::table([
    'columns' => [
        [
            'label' => '',
            'value' => [
                HtmlWidget::tag('input', [
                    'params' => [
                        'type' => 'checkbox',
                        'value' => ".'id_value'"
                    ]
                ]),
                [
                    'id_value' => 'id',
                ]
            ]
        ],
        'status',
        [
            'label' => 'Error',
            'attribute' => 'error_message',
        ],
        'event',
    ],
], $collection)}}