提问者:小点点

存储在DB中的Laravel刀片语法未解析


我将URI/URL和其他路由存储在我的链接数据表中。

        DB::table('links')->insert(
            [
                'group_id'          => $id,
                'title'             => 'Manage Pages',
                'type'              => 'uri',
                'url'               => '/',
                'uri'               => "{{ route('pages.admin-index') }}",
                'order'             => 0,
            ]);

如您所见,我正在存储route()的刀片语法,因此当我从数据库中提取信息时,它将始终使用更新URL,就像我最初直接添加路由一样。

'uri' => route('pages.admin-index'),
'uri' => "{{ route('pages.admin-index') }}",

当我从数据库中提取数据并将其呈现在屏幕上时,我没有得到解析的路由,我看到了显式的

... 文本

<a href="{{ $link->uri }}">
$navs = Groups::where('published',true)->get();

共1个答案

匿名用户

我建议您存储路由名称,而不是您的URI:

DB::table('links')->insert([
    //...
    //'uri'               => "{{ route('pages.admin-index') }}",
    'route'               => "pages.admin-index",
]);

根据你的观点:

<a href="{{ route($link->route) }}">

但是如果您坚持像那样在DB上存储PHP代码,您可以使用evalPHP函数:

DB::table('links')->insert([
    //...
    'uri'               => "route('pages.admin-index')",
]);
<a href="{{ eval($link->uri) }}">