我从数据库中抓取一组任务作为一个雄辩的集合,然后我将集合发送到我的视图foreach
。这里没问题。除此之外,我需要在我的视图中引用任务id
(网址操作等)。但我显然不希望在源代码中使用此功能,因此我使用此library来对代码进行哈希处理。但在视图中这样做似乎是错误的。
有没有办法在模型或控制器中散列id?
以下是我在控制器中调用该集合的方法:
$tasks = Auth::user()->tasks()->orderBy('created_at', 'desc')->get();
这就是我目前在我的视图中对ID进行哈希处理的方法:
<a href="{{ route('tasks.markascompleted', Hashids::encode($task->id)) }}">
任何帮助?
答案 0 :(得分:6)
您可以使用访问器方法执行此操作。首先,在任务模型的顶部附加一个新属性:
protected $appends = ['hashid'];
然后,在同一模型中,创建一个填充属性的访问者:
public function getHashidAttribute()
{
return Hashids::encode($this->attributes['id']);
}
完成后,只需在视图中调用附加属性:
<a href="{{ route('tasks.markascompleted', $task->hashid) }}">
答案 1 :(得分:0)
您可以使用Laravel Hashslug库,该库可以通过最少的设置自动为您完成此操作:
class Task extends Model {
use HasHashSlug;
}
<a href="{{ action('TaskController@markAsCompleted', $task) }}">