breda/laravel-alpha-widget

该包最新版本(1.0.0)没有提供许可信息。

适用于 Laravel 5 的简单小部件管理器

1.0.0 2015-03-26 00:00 UTC

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 分支,因为后者只有生产就绪的代码。