Laravel : 忽略 blade 模板中的 object
Laravel : Ignore object in blade template
我有一个关于 Laravel 最佳实践的问题。我有一个显示我所有产品的 blade 页面,我测试我的产品是否在我的循环中有图像,如果是这样我会忽略它:
@foreach ($products as $product)
@if(is_null($product->getMedia()->first()))
@continue
@endif
<div class="col-md-4">
//display image and product informations
</div>
@endforeach
我的问题是:
这样对吗 ?
或者我发现我忽略了控制器中没有图像的产品?
谢谢!
这取决于您的媒体。如果和你的product一样table就可以,但是如果是关系,最好在你的controller里面过滤一下
这取决于您是否认为没有任何图片的产品是 "invalid" / "inactive",或者您只是不想在此特定视图中显示它们。
您的控制器正在定义类似 "fetch all products which match certain conditions" 的业务需求。如果 "has an image" 是该业务需求的一部分,因为任何没有图像的产品都不应该销售,那么逻辑就会进入您的控制器。
您的视图正在定义特定的演示文稿,例如 "arrange the products in a pretty grid"。如果 "has an image" 只是在此布局中工作的要求,则跳过此处可能是合理的。
但是,完全跳过视图中的产品可能会产生一些不良后果:
- 如果这些产品应该打折,正如控制器退货所暗示的那样,隐藏它们意味着客户看不到它们。
- 如果您有分页,或者找到的结果总数,它将与用户实际可以看到的产品数量不匹配,除非您小心处理跳过的产品。
因此,如果您要构建某种类型的 "highlights",则最适合跳过的产品实际上会显示在列表的下方,只是不会那么显眼。
我有一个关于 Laravel 最佳实践的问题。我有一个显示我所有产品的 blade 页面,我测试我的产品是否在我的循环中有图像,如果是这样我会忽略它:
@foreach ($products as $product)
@if(is_null($product->getMedia()->first()))
@continue
@endif
<div class="col-md-4">
//display image and product informations
</div>
@endforeach
我的问题是: 这样对吗 ?
或者我发现我忽略了控制器中没有图像的产品?
谢谢!
这取决于您的媒体。如果和你的product一样table就可以,但是如果是关系,最好在你的controller里面过滤一下
这取决于您是否认为没有任何图片的产品是 "invalid" / "inactive",或者您只是不想在此特定视图中显示它们。
您的控制器正在定义类似 "fetch all products which match certain conditions" 的业务需求。如果 "has an image" 是该业务需求的一部分,因为任何没有图像的产品都不应该销售,那么逻辑就会进入您的控制器。
您的视图正在定义特定的演示文稿,例如 "arrange the products in a pretty grid"。如果 "has an image" 只是在此布局中工作的要求,则跳过此处可能是合理的。
但是,完全跳过视图中的产品可能会产生一些不良后果:
- 如果这些产品应该打折,正如控制器退货所暗示的那样,隐藏它们意味着客户看不到它们。
- 如果您有分页,或者找到的结果总数,它将与用户实际可以看到的产品数量不匹配,除非您小心处理跳过的产品。
因此,如果您要构建某种类型的 "highlights",则最适合跳过的产品实际上会显示在列表的下方,只是不会那么显眼。