cvepdb / laravel-widgets
此包尚未发布版本,可用的信息不多。
README
http://laravel5pingpong.blogspot.fr/2016/08/widget_18.html
安装
打开您的composer.json文件,并添加新的必需包。
"cvepdb/laravel-widget" : "~2.3"
接下来,打开您的终端并运行composer update。composer更新后,在config/app.php中添加新的服务提供者
'CVEPDB\Widgets\App\Providers\WidgetsServiceProvider',
并在同一文件中添加外观
'Widget' => 'CVEPDB\Widgets\App\Facades\WidgetsFacade'
完成。
更新内容!
订阅小部件:这是一种使用指定类注册小部件的新方法。例如:Widget::subscribe('WidgetSubscriber');
class WidgetSubscriber {
public function subscribe($widget)
{
$widget->register('image', __CLASS__ .'@image');
}
public function image()
{
return 'Your handler here';
}
}
您还可以指定要处理小部件订阅者的哪个方法。
Widget::subscribe('WidgetSubscriber@handle');
class WidgetSubscriber {
public function handle($widget)
{
$widget->register('image', __CLASS__ .'@image');
}
public function image()
{
return 'Your handler here';
}
}
注册小部件
默认情况下,您可以在app/widgets.php中注册小部件,该文件将自动加载。通过闭包。
app/widgets.php
Widget::register('small', function($contents)
{
return "<small>{$contents}</small>";
});
Widget::register('view', function($view, $data = array(), $mergeData = array()
{
return View::make($view, $data, $mergeData)->render();
});
通过类名
默认情况下将调用register方法。
class MyWidget {
public function register($contents, $attributes = array())
{
$attributes = HTML::attributes($attributes);
return "<h1{$attributes}>{$contents}</h1>";
}
}
Widget::register('h1', 'MyWidget');
通过具有指定方法的类名
class TagCreator {
public function create($tag, $contents, $attributes = array())
{
$attributes = HTML::attributes($attributes);
return "<{$tag}{$attributes}>{$contents}</{$tag}>";
}
}
class HTMLWidget {
protected $tag;
public function __construct(TagCreator $tag)
{
$this->tag = $tag;
}
public function p($contents, $attributes = array())
{
return $this->tag->create('p', $contents, $attributes);
}
public function div($contents, $attributes = array())
{
return $this->tag->create('div', $contents, $attributes);
}
}
Widget::register('p', 'HTMLWidget@p');
Widget::register('div', 'HTMLWidget@div');
调用小部件
Widget::get('small', array('My Content'));
Widget::call('small', array('My Content'));
Widget::small('My Content');
Widget::p('My Content');
Widget::div('My Content');
Widget::h1('My Content');
在视图中,您可以这样调用。
@small('My Content')
@view('users.show', $data, $mergeData)
@h1('Welcome!')
@p('Hello World', array('class' => 'page-header'));
@div('Lorem ipsum', array('class' => 'alert alert-warning'));
分组小部件
分组小部件非常简单。您只需指定组名,并指定将分组的小部件名称数组。
Widget::register('calendar', 'SidebarWidget@calendar')
Widget::register('archive', 'SidebarWidget@archive')
Widget::group('sidebar', array('calendar', 'archive'));
调用一组小部件与调用小部件相同。
Widget::sidebar();
如果您想向组内的小部件发送参数,可以像这样调用。
Widget::sidebar(
array('your-first-param', 'your-second-param'),
array('first-param-for-second-widget', 'the-second')
);
在视图中,调用一组小部件与调用小部件相同。
@sidebar()
@sidebar(array('first-param'), array('first-param-for-second-widget'))