使用像wp这样的短代码在Laravel 5.1中渲染数据

时间:2018-05-14 05:07:25

标签: php mysql laravel laravel-5

我的数据库中包含以下内容 -

<p>This is dummy content for testing</p>
{{LandingPageController::getTest()}}

我想把它渲染到我的视野中。但是当我在Laravel视图中渲染时,这个{{LandingPageController::getTest()}}会在存储在DB中时显示出来。 我想在我的视图中调用LandingPageController getTest方法。

请建议我快速解决此问题。

目标网页控制器

public function getTest(){
    return "Hello World!!!";
}

5 个答案:

答案 0 :(得分:1)

只需使函数静态

public static function getTest(){
    return "Hello World!!!";
}

这是你可以像{{LandingPageController::getTest()}}这样调用它的唯一方法,但我建议不要在你的刀片文件中这样做,这不是一个好的代码设计。您应该在控制器中执行$test = LandingPageController::getTest()退回刀片视图并将其传递给return view('blade_file_name',compact('test'))并在您的刀片文件中执行{{$test}}

PS - 如果您这样做,您的控制器将使用类似use Path\To\Controller\LandingPageController

的类

答案 1 :(得分:0)

在刀片文件中使用该控制器的命名空间。例子

namespace App\Http\Controllers\LandingPageController;

答案 2 :(得分:0)

您可以使用eval()函数

将字符串评估为php代码
  

eval - 将字符串评估为PHP代码

非常气馁

  

eval()语言构造非常危险,因为它允许执行任意PHP代码。因此不鼓励使用它。如果您已经仔细验证除了使用此构造之外没有其他选择,请特别注意不要将任何用户提供的数据传递到其中,而不事先正确验证它。

在将内容保存到存储中时,您可以使用通用字符串{test}

<p>This is dummy content for testing</p>
{test}

然后,只要您需要显示实际内容,就可以简单地用实际值替换通用字符串。您的刀片文件中有此行:

{{ str_replace('{str}', "Hello World", $content) }}

答案 3 :(得分:0)

看看Helper。您可以在视图中调用辅助函数来渲染文本或html

答案 4 :(得分:0)

获得解决方案,通过“laravel-shortcodes”实现功能。

laravel-shortcodes上找到了一个非常好的教程,比如wordpress