haganjones / laravel-viewables
基于类的处理Laravel视图的方法。
Requires
- php: >=5.6.0
- laravel/framework: >= 5.5.0
Requires (Dev)
- orchestra/testbench: 3.5.*
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-10 06:11:30 UTC
README
类似于Laravel的Mailables,Viewables允许您采用基于类的处理方法来处理和操作Laravel中的视图。
通过Composer安装
composer require "haganjones/laravel-viewables"
包含服务提供者
在config/app.php
中将以下内容添加到服务提供者数组中
HaganJones\LaravelViewables\Providers\ServiceProvider::class,
编写Viewables
所有可查看类的配置都在build
方法中完成。在这个方法中,您可以调用各种方法,如view
和with
来渲染视图并传递数据。
配置视图
在可查看类的build
方法中,您可以使用view
方法指定渲染视图时应该使用哪个模板
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('dashboard');
}
视图数据
通过公共属性
通常,您可能希望将一些数据传递到视图中,以便在渲染视图的HTML时使用。您有两种方法可以使数据可用于视图。首先,在您的可查看类上定义的任何公共属性将自动可用于视图。例如,您可以将数据传递到可查看类的构造函数中,并将其设置为类的公共属性
<?php
namespace App\View;
use App\User;
use HaganJones/LaravelViewables/View/Viewable;
class DashboardView extends Viewable
{
/**
* The user instance.
*
* @var User
*/
public $user;
/**
* Create a new viewable instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Build the view.
*
* @return $this
*/
public function build()
{
return $this->view('dashboard');
}
}
一旦数据被设置为公共属性,它将自动可用于视图,因此您可以像访问任何其他数据一样访问它
<div>
Logged in as: {{ $user->name }}
</div>
通过with
方法
如果您想在数据发送到模板之前自定义其格式,您可以通过with
方法手动将数据传递到视图中。通常,您仍然会通过可查看类的构造函数传递数据;然而,您应将此数据设置为protected
或private
属性,以便数据不会自动可用于模板。然后,在调用with
方法时,传递一个包含您希望使模板可用的数据的数组
<?php
namespace App\View;
use App\User;
use HaganJones/LaravelViewables/View/Viewable;
class DashboardView extends Viewable
{
/**
* The user instance.
*
* @var User
*/
protected $user;
/**
* Create a new viewable instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('dashboard')
->with([
'userName' => $this->user->name,
'userEmail' => $this->user->email,
]);
}
}
一旦数据传递给了with
方法,它将自动可用于视图,因此您可以像访问任何其他数据一样访问它
<div>
Logged in as: {{ $userName }}
</div>
渲染视图
要服务视图,请使用辅助函数viewable()
。您可以将您可查看类的实例传递到这个辅助函数中
从版本0.2开始,Viewables实现了Laravel的Responsable接口,这使得您可以从控制器中直接返回Viewable类的实例。虽然viewable()
函数仍然可用,但将在未来的版本中删除。
<?php
namespace App\Http\Controllers;
use App\User;
use App\View\DashboardView;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
class DashboardController extends Controller
{
/**
* Show the dashboard page
*
* @return Response
*/
public function get()
{
//return viewable(
// new DashboardView(Auth::user())
//);
return new DashboardView(Auth::user());
}
}