Я пишу приложение Laravel 7, используя Blade views. Одна из моих таблиц MySQL содержит клиентов tools
, у которых есть id
, который не следует конкретному шаблону c (реструктуризация этих идентификаторов не обсуждается, поскольку они поступают из другой системы, которую клиент не изменит). Некоторые из этих идентификаторов имеют начальный ноль, который должен отображаться во всех представлениях, например, например, 055A.
Идентификаторы хранятся с ведущими нулями в базе данных (varchar (64)), здесь нет проблем. Но когда представление лезвия показывает идентификаторы, ведущий ноль пропадает, и, более того, ссылка на edit
и delete
похожа на myapp/public/tool/5A5/edit
, что приводит к ошибке c.
Мой подход должен был показать идентификаторы с <td>{{ sprintf('%04d', $tool->id) }}</td>
, но не все идентификаторы имеют 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()]);
}