Php 拉威尔视图生成器
我正在学习拉威尔的一个教程,有一点我不明白。它指的是使用视图生成器Php 拉威尔视图生成器,php,laravel,Php,Laravel,我正在学习拉威尔的一个教程,有一点我不明白。它指的是使用视图生成器 -我有一个名为fromapp/http/routes.php的模板,给定一个Url: Route::get('cats/create',function(){return view('cats.create');}) 这是cats/create.blade.php: 4.-这是CatFormComposer class CatFormComposer { protected $breeds; public fu
app/http/routes.php
的模板,给定一个Url:
Route::get('cats/create',function(){return view('cats.create');})代码>
cats/create.blade.php
:
4.-这是CatFormComposer
class CatFormComposer
{
protected $breeds;
public function __construct(Breed $breeds)
{
$this->breeds = $breeds;
}
public function compose(View $view) {
$breeds = $this->breeds;
$view->with('breeds', $breeds->lists('name', 'id'));
}
}
它起作用了。我不明白的是,如何将
$brides
参数传递给类的构造函数?所有视图生成器都由laravel服务容器解析。因此,当您键入hintbride$brides时,laravel将用于查找所需的类并注入该类的实例(在这种情况下:容器将查找bride类,创建新的bride并将实例传递给构造函数)
此外,为了更深入地理解,您可以查看模式谢谢,我明白了。。。为什么他们不能在构造函数中声明并实例化var$?不是更具可读性吗?在测试和松耦合的情况下,遵循构造函数注入可以获得一些巨大的好处。如果他们像您所说的那样在作用域中本地实例化它,那么在不确保正确实现繁殖类的情况下,将很难测试ViewComposer。另一方面,构造函数注入帮助我们模拟繁殖实现并通过构造函数注入它。归根结底,它帮助我们遵守坚实的原则。
<div class="form-group">
{!! Form::label('name','Name') !!}
<div class="form-controls">
{!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('date_of_birth', 'Date of Birth') !!}
<div class="form-controls">
{!! Form::date('date_of_birth', null, ['class' => 'form-control']) !!}
</div>
</div>
<div class="form-group">
{!! Form::label('breed_id','Breed') !!}
<div class="form-controls">
{!! Form::select('breed_id', $breeds, null, ['class' => 'form-control']) !!}
</div>
</div>
{!! Form::submit('Save Cat', ['class' => 'btn-primary']) !!}
public function boot(ViewFactory $view)
{
$view->composer('partials.forms.cat','Furbook\Http\Views\Composers\CatFormComposer');
}
class CatFormComposer
{
protected $breeds;
public function __construct(Breed $breeds)
{
$this->breeds = $breeds;
}
public function compose(View $view) {
$breeds = $this->breeds;
$view->with('breeds', $breeds->lists('name', 'id'));
}
}