我的页面中有一个包含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>
答案 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
现在,如果您需要创建自己的函数,请在此解释如何执行此操作:
答案 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>