在 Blade 视图中保留前导零
Posted
技术标签:
【中文标题】在 Blade 视图中保留前导零【英文标题】:Preserving leading zeros in Blade view 【发布时间】:2020-07-13 15:25:05 【问题描述】:我正在使用 Blade 视图编写一个 Laravel 7 应用程序。我的一个 mysql 表包含客户端 tools
,其 id
没有遵循特定模式(重组这些 id 不在讨论范围内,因为它们来自另一个系统,客户端不会更改)。其中一些 id 有一个前导零,应该显示在所有视图中,例如055A。
ID 以前导零存储在数据库中 (varchar(64)),没有问题。但是当刀片视图显示 ids 时,前导零消失了,而且指向 edit
和 delete
的链接就像 myapp/public/tool/5A5/edit
一样导致错误 ofc。
我的方法是用<td> sprintf('%04d', $tool->id) </td>
显示ID,但并非所有ID 都有4 个字符,并且链接仍然像myapp/public/tool/5A5/edit
,因为Blade 采用了整个$tool
对象。这是我认为的部分:
@foreach($tools as $tool)
<tr>
<td> sprintf('%04d', $tool->id) </td> //not enough!
<td> $tool->title </td>
<td style="text-align: center;"> $tool->tooltype->name </td>
@can('manage-tools', App\User::class)
<td class="td-actions text-right">
<form action=" route('tool.destroy', $tool) " method="post">
@csrf
<a rel="tooltip" class="btn btn-success btn-link" href=" route('tool.edit', $tool) " data-original-title="" title="">
<i class="material-icons">edit</i>
<div class="ripple-container"></div>
</a>
@method('delete')
<button type="button" value="disabled" disabled class="btn btn-danger btn-link" data-original-title="" title="delete"
onclick="confirm(' __("Wirklich löschen?") ') ? this.parentElement.submit() : ''">
<i class="material-icons">close</i>
<div class="ripple-container"></div>
</button>
</form>
</td>
@endcan
</tr>
@endforeach
来自我的 ToolController:
public function index(Tool $model)
$this->authorize('manage-tools', User::class);
return view('tools.index',['tools' => $model->get()]);
【问题讨论】:
我在帖子中添加了控制器功能,不,我不进行迁移。 在执行return view('tools.index',['tools' => dd($model->get())]);
时,会保留零,05A5
仍然存在。
是的,$tool->id
是 5A5
也适用于 href=" route('tool.edit', $tool) "
。
不,同样的事情,没有零。这可能是 php 配置问题吗?
耶!就是这样!只是让它成为一个答案,所以我可以给你学分。当字符串不能递增时,这个选项是什么以及它如何用于 varchar 字段?
【参考方案1】:
Laravel 会在幕后做一些“魔术”来优雅地处理 id 字段,例如去除前导零。由于在大多数情况下,模型 ID 都是递增的,因此默认情况下会附带此行为。您可以在没有递增 id 字段的模型上使用以下设置禁用此行为。在你的情况下:
class Tool extends Model
public $incrementing = false;
....
【讨论】:
以上是关于在 Blade 视图中保留前导零的主要内容,如果未能解决你的问题,请参考以下文章