Laravel - 渲染由关联数组传递的html

问题描述 投票:-2回答:2

我已经在这几天苦苦挣扎了。

我有一个关联数组,我想在我的视图中循环。例如,在循环创建表时它很有用。

问题是,在另一个视图中,我将需要在数组中包含一些HTML(一个按钮),我将作为JSON传递给视图。我试过这样的事情,没有成功。

$datacol[] = array(
'button' => '<a href="tasks/details/{{ $task->id }}" class="btn btn-sm">
<i class="bookmark big icon" data-toggle="tooltip" data-placement="top" title="Task Details"></i></a>',
'id' => $task->id,
'task_type' => (DB::table('tasktypes')->where('id','=', $task->task_type_id)->value('task_type')),
'related_block' => (DB::table('chapters')->where('id','=', $task->related_block)->value('description')),
'assigned_to' => (DB::table('users')->where('id','=', $task->assigned_to)->value('display_name')),
'time' => (DB::table('task_interactions')->where('task_id','=', $task->id)->pluck('task_time')->sum()),
'start_date' => (DB::table('task_interactions')->where('task_id','=', $task->id)->where('status','=','In Progress')->pluck('created_at')->first()),
'end_date' => (DB::table('task_interactions')->where('task_id','=', $task->id)->where('status','=','Finished')->pluck('created_at')->first()),
'status' => (DB::table('tasks')->where('id','=', $task->id)->value('status')),
'comments' => (DB::table('tasks')->where('id','=', $task->id)->value('comments'))
);

有没有人知道在数组中传递HTML的方法,并确保在视图中呈现数组。

<tbody>
@foreach($datacol as $d)
<tr>
<td>{{ $d['button'] }}</td>
<td>{{ $d['id'] }}</td>
<td>{{ $d['task_type'] }} - {{ $d['related_block'] }}</td>
<td>{{ $d['assigned_to'] }}</td>
<td>{{ $d['time'] }}</td>
<td>{{ $d['start_date'] }}</td>
<td>{{ $d['end_date'] }}</td>
<td>{{ $d['status'] }}</td>
<td>{{ $d['comments'] }}</td>
</tr>
@endforeach
</tbody>

提前致谢

html arrays json laravel
2个回答
1
投票

像这样更改你的数组你需要为按钮提供适当的html字符串,因为它不会被刀片进一步解析。在href中你使用blade({{}})追加$ task-> id,这就是为什么它不会在url中附加正确的id。你需要使用(。)将id连接到url。

$datacol[] = array(
     'button' => '<a href="tasks/details/'.$task->id.'" class="btn btn-sm">
<i class="bookmark big icon" data-toggle="tooltip" data-placement="top" title="Task Details"></i></a>',
    'id' => $task->id,
// other stuff 
);

然后在视图中使用{!!渲染按钮$ html !!}

<tbody>
@foreach($datacol as $d)
<tr>
<td>{!!$d['button'] !!}</td>
<td>{{ $d['id'] }}</td>
<td>{{ $d['task_type'] }} - {{ $d['related_block'] }}</td>
<td>{{ $d['assigned_to'] }}</td>
<td>{{ $d['time'] }}</td>
<td>{{ $d['start_date'] }}</td>
<td>{{ $d['end_date'] }}</td>
<td>{{ $d['status'] }}</td>
<td>{{ $d['comments'] }}</td>
</tr>
@endforeach
</tbody>

我希望它会有所帮助:)


0
投票

完全从PHP代码中删除按钮键值对,并在视图中呈现标记。

您可以在视图中生成<a>标记,仅使用您传递的ID({{ $id }}):

<a href="tasks/details/{{ $id }}" class="btn btn-sm">
<i class="bookmark big icon" data-toggle="tooltip" data-placement="top" title="Task Details"></i></a>

无需在PHP代码中混合HTML(考虑到您正在使用Laravel,它将视图与其他代码完全隔离)。

© www.soinside.com 2019 - 2024. All rights reserved.