【发布时间】:2019-11-12 11:25:34
【问题描述】:
我有一个包含子块的页面。 每个块都需要有一个特定的渲染(使用特定的模板)。 为此我不得不在我的刀片模板中使用@php。
这是我的代码:
PageController.php
public function edit(Page $page)
{
return view('pages.edit', compact('page'));
}
查看页面/edit.blade.php
<section id="contents" class="contents ui-sortable">
@foreach ($page->blocs as $bloc)
@php
echo $bloc->id;
echo App\Http\Controllers\BlocController::renderBloc($bloc);
@endphp
@endforeach
</section>
BlocController.php
public static function renderBloc(Bloc $bloc) {
echo $bloc->id;
return view('blocs.show.' . $bloc->bloc_type, [
'bloc' => $bloc,
'data' => json_decode($bloc->data)
]);
}
然后是bloc的一个例子
resources/views/blocs/show/text.blade.php
@extends('blocs.show')
@section('bloc')
{{ $bloc->id }}
@endsection
resources/views/blocs/show.blade.php
<section class="bloc bloc_{{ $bloc->bloc_type }}" data-bid="{{ $bloc->id }}">
{{$bloc->id}}
@yield('bloc')
</section>
我有两个问题:
- 我认为这不是一个好方法吗?我不喜欢在模板中使用@php。我很想对此发表意见?也许我需要使用服务提供商?
- 模板 (resources/views/bloc/show/text.blade.php) 中的 $bloc->id 错误(它显示了 foreach 中第一个子 bloc 的 id,即使我所有的 echo $bloc -> 显示好 id 之前的 id(page/edit/blade.php,BlocController.php,resources/view/blocs/show.blade.php)。这是我做错事的另一个证明我猜?李>
谢谢
【问题讨论】:
标签: laravel laravel-blade