gpt4 book ai didi

laravel-4 - 从字符串而不是文件渲染 Blade

转载 作者:行者123 更新时间:2023-12-04 18:08:17 25 4
gpt4 key购买 nike

如何呈现包含 Blade 语法的字符串?

View::make('directory.file-name')->with('var', $var);  // Usual usage

View::render('{{$var}}')->with('var', $var); // Like this for Example

我使用编写了一个生成 Blade 语法的脚本,如果可能的话,我想将它的输出直接提供给 Blade 引擎。

谢谢

最佳答案

我不建议使用 'Blade::compileString',因为它不会像 View 那样完全呈现 PHP。

这是我实际 的工作版本 Blade 字符串渲染器 .您可以像使用 .blade.php 文件一样将它用于数据库内容或任何要呈现的字符串。用 Laravel 4 测试。完整的评论和解释。

不要忘记在 View 中创建“缓存”文件夹

此函数生成文件 View

public function generateViewFile($html, $url, $updated_at)
{
// Get the Laravel Views path
$path = \Config::get('view.paths.0');

// Here we use the date for unique filename - This is the filename for the View
$viewfilename = $url."-".hash('sha1', $updated_at);

// Full path with filename
$fullfilename = $path."/cache/".$viewfilename.".blade.php";

// Write the string into a file
if (!file_exists($fullfilename))
{
file_put_contents($fullfilename, $html);
}

// Return the view filename - This could be directly used in View::make
return $viewfilename;
}

这是 ContentController 路由渲染器
public function getIndex($uri = false)
{
// In my real ContentController I get the page from the DB here
//
// $page = Page::findByUrl($uri);
// $content = $page->content;
// $updated_at = $page->updated_at;
// $url = $page->url;

$content = '<h1>This is the page to render</h1>';
$updated_at = '2015-07-15 02:40:55';
$url = '/blog/new-article';

// Will write the file when needed and return the view filename
$filename = $this->generateViewFile($content, $url, $updated_at);

// Fully render and output the content
return View::make('cache/'.$filename);
}

route.php 末尾的处理程序。即使这不是必需的,这也是为了提供一个完全可测试的解决方案。
Route::get('{all}', 'ContentController@getIndex')->where('all', '.*');

关于laravel-4 - 从字符串而不是文件渲染 Blade ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com