我有一个ProductsController和Product模型。产品包含以下字段:
产品可以是其他产品的儿童。这允许产品基本上继承父产品的属性(名称,照片,重量等)。
在我的模板中打印产品名称非常简单:
{{ $product->name }}
但是,我还希望在许多(但不是全部)情况下执行以下操作:
由于我经常在我的代码中使用它,而不是在我的刀片模板中编写if / else语句,因此我已将以下功能添加到我的产品模型中。
public function getNameAndQuantity()
{
// Use the parent products name if this child product has no name
if(empty($this->name))
{
$this->name = $this->parent->name;
}
// Append quantity if empty
if($this->quantity > 1)
{
return $this->name . ' (Pack of ' . $this->quantity . ')';
}
return $this->name;
}
这可以按预期工作。 我的问题是:这个功能应该去哪里?它似乎不属于产品型号。
我已经阅读了一些关于为这种功能创建库的内容,但是我在命名约定方面有点丢失,或者是挂钩的最佳实践,因此代码保持可读性。或者这可能属于模板部分而不是......
谢谢!
答案 0 :(得分:1)
由于您使用的是Laravel,我建议您在Controller中使用它。
但这取决于偏好,在我的情况下,我会创建一个Helper类,然后为它创建一个外观,最后通过服务提供商使用它。
为了实现这个正确的步骤将是:
app/
,helpers
,facades
services
中创建文件夹
ClassLoader
app/start/global.php
和composer.json
自动加载helpers
中进一步创建一个包含所需功能的辅助类,然后根据information here创建一个外观app/services
创建服务提供商,并在app/config/app.php
运行并且您将拥有静态外观以轻松访问所有这些功能。