简单的Laravel公共函数(if / else)用于substr方法

时间:2017-10-31 11:03:40

标签: php laravel function public

我的页面中有一个包含6列的表,我需要一些名为Notes(描述​​)的最后一个帮助。在这里,我使用工具提示来显示上面的描述,因为通常文本很长,而对于列文本,我使用substr($ item-> notes,0,15)来仅捕获前15个字母。

现在,我要做的是在我的模型中创建一个函数,为我提供下一个行为:如果项目有描述,则显示substr($ item-> notes,0, 15),否则只显示'N / A'。

这是我的观点:

<td class="text-right" data-toggle="tooltip" data-placement="top" data-html="true" title="{{ $item->notes ? $item->notes : 'N/A'  }}">{{ substr($item->notes, 0, 15) }}</td>

4 个答案:

答案 0 :(得分:1)

这来自文档:https://laravel.com/docs/5.5/eloquent-mutators#accessors-and-mutators

  

要定义访问者,请在模型上创建 getFooAttribute 方法   其中 Foo 是您要访问的列的“studly”外壳名称。   在此示例中,我们将为 first_name 定义一个访问者   属性。当Eloquent时,访问者将自动调用   尝试检索 first_name 属性的值:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}

在你的情况下会产生类似

的东西
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
    protected $fillable = ['notes']; // just for this demo

    public function getNotesAttribute($value)
    {
        if (!empty($value)) {
            return substr($value, 0, 15);
        } else{
            return 'N/A';
        }
    }
}

答案 1 :(得分:0)

如果您只想在视图中执行$ item-&gt;注释而不必每次都写入条件,则必须在模型中使用访问器。

在这里,我假设“notes”是你的despription属性的名称。修改它以满足您的需求。

public function getNotesAttribute($value) {
      if (!empty($value)) {
        return substr($value, 0, 15);
      } else{
        return 'N/A';
      }
}

答案 2 :(得分:0)

使用laravel的辅助函数,在这种情况下,str_limit()会为你服务,例如:

<td class="text-right" data-toggle="tooltip" data-placement="top" data-html="true" title="{{ $item->notes ? $item->notes : 'N/A'  }}">
    {{ str_limit($item->notes, 15) }}
</td>

此外,laravel还有许多有用的功能,您可以在文档中看到它们:

https://laravel.com/docs/5.1/helpers#method-str-limit

https://laravel.com/docs/5.1/helpers

现在,如果您需要创建自己的函数,请在此解释如何执行此操作:

https://laracasts.com/discuss/channels/general-discussion/best-practices-for-custom-helpers-on-laravel-5?page=1

答案 3 :(得分:-1)

你必须像在标题中那样做:

<td class="text-right" data-toggle="tooltip" data-placement="top" data-html="true" title="{{ $item->notes ? $item->notes : 'N/A'  }}">{{ substr($item->notes, 0, 15) ? substr($item->notes, 0, 15) : 'N/A' }}</td>