breda / laravel-alpha-widget
适用于 Laravel 5 的简单小部件管理器
Requires
- illuminate/container: 5.0.*
- illuminate/contracts: 5.0.*
- illuminate/support: 5.0.*
Requires (Dev)
- mockery/mockery: ~0.9.2
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2024-09-07 15:28:13 UTC
README
这是一个非常简单、易于使用的 Laravel 5 小部件管理器,[链接](https://laravel.net.cn)。
安装
首先,通过 Composer 安装包。
$ composer require breda/laravel-alpha-widget
在 config/app.php
文件中,添加服务提供者
'providers' => [ // Other providers... 'BReda\AlphaWidget\ServiceProvider', ]
然后,注册别名
'aliases' => [ // Other aliases... 'AlphaWidget' => 'BReda\AlphaWidget\Facades\AlphaWidget', // Of course, you can name the alias to whatever you want. // ex: // 'Widget' => 'BReda\AlphaWidget\Facades\AlphaWidget', ]
最后,将 AlphaWidget 配置文件发布到你的 config
目录
$ php artisan vendor:publish
现在你就可以使用 AlphaWidget 了!
操作指南
现在,当我说这是一个简单的小部件管理器时,我是认真的!它就像在配置文件中注册小部件别名及其类一样简单。就像这样
'widgets' => [ // Other widgets... 'myRecentUsersWidget' => 'RecentUsers', ]
在我们继续之前,有一件事需要注意,那就是我这里只引用了类名,而不是完整的命名空间。这就是为什么在
config/alphaWidget.php
文件中有一个namespace
字段。
为了缩短类名,只需在配置文件中将你想要的命名空间放入其中,确保你的所有小部件类都声明了这个命名空间,就这些!
然后,调用小部件就像这样简单
AlphaWidget::render('myRecentUsersWidget'); // Or, a much better way: AlphaWidget::myRecentUsersWidget();
现在,你可能想知道那个 RecentUsers
看起来是什么样子!它是一个简单的类,实现了 AlphaWidget
接口,表明它必须有一个 render
方法。这个方法负责渲染小部件内容。
<?php namespace App\Widgets; use BReda\AlphaWidget\Contracts\AlphaWidget as WidgetContract; class RecentUsers implements WidgetContract { /** * Render the Widget * * @return string */ public function render(){ return "Hello from the widget!"; } }
这里有一点需要注意!
render
方法应该返回
内容,而不是echo
它们!记住!没有echo
!只是return
。
另一个注意事项
向小部件调用传递参数
当然,你可以向小部件调用传递参数。例如,像这样
AlphaWidget::render('myRecentUsersWidget', [5]); // Or, a much better way: AlphaWidget::myRecentUsersWidget(5);
然后在你的类中
<?php namespace App\Widgets; use BReda\AlphaWidget\Contracts\AlphaWidget as WidgetContract; class RecentUsers implements WidgetContract { /** * How much should we limit the displayed users. * * @var string */ protected $limit; /** * Create a new RecentUsers Widget instance * * @return void */ public function __construct($limit) { $this->limit = $limit; } /** * Render the Widget * * @return mixed */ public function render(){ return "Displaying the {$this->limit} recently registerd users..."; } }
现在!最后要注意的一点是,由于所有小部件都是通过 Laravel 的 IoC 容器解析的,你可以在你的小部件类中类型提示任何 Laravel 服务!
实际示例
一个好的例子是获取最近注册的 5 个用户。
<?php namespace App\Widgets; use App\Repositories\UsersRepository; use BReda\AlphaWidget\Contracts\AlphaWidget as WidgetContract; class RecentUsers implements WidgetContract { /** * How much should we limit the displayed users. * * @var string */ protected $limit; /** * Create a new RecentUsers Widget instance * * @return void */ public function __construct($limit, UsersRepository $users) { $this->limit = $limit; $this->users = $users; } /** * Render the Widget * * @return mixed */ public function render(){ $users = $this->users->getRecentUsers($this->limit); return view('widgets.recent-users', ['users' => $users]); } }
就这么简单!
贡献
无论是修复错误、改进或其他类似的内容,都欢迎提交补丁请求!请确保将它们提交到 develop
分支,而不是 master
分支,因为后者只有生产就绪的代码。