可能查询DB进入Blade? 我从路线发送到刀片,所有MyUsers和预订。
在表格预订中我是列id_user,
我有这段代码
@foreach
{{$booking->id}}
this down Foreach is not optimized - it's possible improve it?
@foreach ($Myusers as $Myuser)
@if ($myuser == $booking->id_user)
$myuser->name
@endif
@endforeach
@endforeach
我尝试使用Blade ::指令,但我只能发送stirng值而不是php值。我有这个代码
Blade::directive('DettagliUtente', function($expression) {
print_r($expression);
but echo the string "$booking->id_user" but I want the value $booking->iduser
$dettaglioutente=\App\Utenti::find($var)->first();
return "<?php echo '".$dettaglioutente->name."'; ?>";
});
@DettagliUtente ($booking->id_user)
请帮助我
答案 0 :(得分:2)
如果您要在刀片模板中执行复杂的操作,只需添加<?php ... ?>
标记就可以执行此操作。
话虽如此,请不要,这是一种不好的做法,除了模板上的简单IF或迭代之外,你不应该有代码,查询或任何逻辑。
您应该执行逻辑并从实际代码中获取数据,而不是在视图上,您需要分离概念,视图中不应包含代码,只需向用户显示数据。
从我所看到的,问题似乎是你可能想要在每个(或许多)页面上显示某些东西,当然你不想在每个控制器中重复你的自我获取相同的数据
因此,我将向您推荐使用 View Composers 的此类问题。您可以在此处查看文档:{{3}}
如何使用视图作曲家
您在app/Providers
中创建了一个新的提供者,您可以在ViewComposerProvider
方法中将其称为boot()
,您可以定义一个视图编辑器:
View::composer('partials.my-books', 'App\Http\ViewComposers\MyBooksComposer');
然后你创建那个类并创建一个函数compose(View $view)
,你可以在那里获取数据,做任何逻辑并最终将数据发送到视图:
$view->with('books', $my_list_of_books);
然后,您需要做的就是将该部分模板包含到任何模板中,Laravel将看到它需要为该部分模板调用视图编辑器。
您的基本模板:
...
@include('partials.my-books')
...
您的部分模板app/resources/views/partials/my-books.blade.php
:
<ul>
@foreach($books as $book)
<li>{{$book->name}}</li>
@endforeach
</ul>
注意:请注意,您需要将提供商ViewComposerProvider
注册到config.app
我希望这会有所帮助。