可能只是来自一个更受限制的java背景,但我觉得Laravel中的视图和控制器之间的连接容易出错。例如,考虑一个看起来像这样的控制器
ReceiptController extends BaseController {
...
public function show() {
$data = array($receipt, $offer);
View::make('registration', $data);
}
}
和视图取决于收据对象和商品字符串
...
<div id="receipt">
<h1>Receipt</h1>
{{$receipt->items}}
@if ($receipt->price > 10000)
<p>{{$offer}}</p>
@endif;
</div>
...
如果某处的控制器不包含要约字符串怎么办?最糟糕的情况是,在有人购买价格超过10000的东西之前,它可能会被忽视。如果控制器没有通过制作视图所需的所有变量,我将如何抛出错误?如果它还使像PHPStorm这样的IDE能够识别变量,那就获得奖励。
答案 0 :(得分:1)
您可以使用view composer,并确保无论何时调用收据视图,都会包含优惠。这样你就知道对象总是被传递。
View::composer('receipt', function($view)
{
$view->with('offer', Offer::get(1));
});
或者您可以直接在视图中处理
<div id="receipt">
<h1>Receipt</h1>
{{$receipt->items}}
@if ($receipt->price > 10000)
<p>{{$offer or 'Sorry - no special available'}}</p>
@endif;
</div>
最后 - “最佳”选项始终为test your code,并检查您的视图是否始终使用$ offer变量调用
$this->assertViewHas('offer');
答案 1 :(得分:0)
如果想要在Controller中工作,如果价格高于某个值,则设置$ var = false并检查是否在视图中。
if($receipt->price > 10000) {
$offer = $offer;
} else {
$offer = false;
}
关于PHPStorm和刀片模板引擎之间的兼容性,PHPStorm 7.1不支持它,但是你有助于为下一个版本建立一个更好的世界投票:http://youtrack.jetbrains.com/issue/WI-14172