【问题标题】:Laravel 5 Blade. Blade subviews included on a view doesn't render Laravel specific code insideLaravel 5 刀片。视图中包含的刀片子视图不会在内部呈现 Laravel 特定代码
【发布时间】:2015-08-20 12:29:48
【问题描述】:

我在尝试显示包含在视图中的子视图的内容时遇到了一个烦人的问题。

我正在通过网络搜索解决方案,购买其中任何一个都可以解决这个问题。 我想我都做对了,但是,当然,有些地方是错的。

简单地说,我加载一个要在 HTTP 控制器上显示的视图:

//登录主控制器

class LoginMainController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $tech_info = TechInfoCliente::create();

        return View::make('login_main')->with('tech_info', $tech_info);
    }
}

然后,在视图上,我将一些代码放在 Laravel 提供的双括号内,以便在视图上注入代码,例如:

//login_main.blade.php
(...)
{{!! HTML::style('css/360player.css') !!} 
(...)
{{Lang::get('knockeasy.signup')}}
(...)
//And then i tried to load a simple subview 
@include('player_360')


//player_360.blade.php
<div class="music"> 
    <label>{{Lang::get('knockeasy.music')}}</label>     
     (...) 
</div>

子视图的 html 代码在视图中正确呈现,但标签 {{Lang::get('knockeasy.music')}} 在页面上以大括号字面显示(无需处理)。

这里有什么问题? 我忘记了什么重要的事情? 我在考虑是否必须在 LoadMainController 上渲染子视图并添加到最终的 make 视图过程中,但我很确定它可以通过特殊说明在自身刀片视图中实现。

有什么想法吗?

谢谢大家。

已修复,部分带有肮脏和丑陋的符号。

更换

//player_360.blade.php
<div class="music"> 
    <label>{{Lang::get('knockeasy.music')}}</label>     
     (...) 
</div>

代替:

 //player_360.blade.php
<div class="music"> 
    <label><?php echo Lang::get('knockeasy.music'); ?></label>      
     (...) 
</div>

但我真的相信 Blade 引擎能够解析和渲染包含在子视图中的双括号

【问题讨论】:

  • 你确定你所有的视图都有.blade后缀吗?
  • 你试过@lang('knockeasy.signup')`代替吗?
  • @Ivanka Todorova,是的,我所有的模板都是正确的地方,即使包含的 player_360 的内容也显示得很好,但是双括号之间的语言标签按字面意思显示(没有经过处理)这是主要的问题。
  • @Jake Opena @lang('knockeasy.signup') 和 {{Lang::get('knockeasy.signup')}} 在主视图上就像一个魅力(相同),但是他们中的任何一个都适用于包含的子视图。 :(
  • 你有player_360.phpplayer_360.blade.php吗?

标签: laravel laravel-5 blade


【解决方案1】:

特征

public static function getTableView($modelClass)
{
    $tableName = $modelClass::getTableName();
    $columns = Schema::getColumnListing( $tableName );

    $view = View::make("components/table", [
        "TableTitle" => $modelClass::DISPLAYNAME_IN, 
        "prefix" => $modelClass::PREFIX,
        "Columns" => $columns
        ]);

    $result = $view->render();
    return $view;
}

在控制器中

$table = $this->getTableView(SugarFactory::class);

    return view('sugar_factories/list_sf', ["table" => $table ]);

在视图中

{!! $table !!}

【讨论】:

    【解决方案2】:

    Laravel-5 现在改变了我们使用标签{{ }} 这个标签的方式,在 laravel-5 中,转义特殊字符、标签和代码。 每次调用它都会像文本一样打印。

    要使用代码打印字符串或变量,您需要使用标签:

    {!! !!}
    

    【讨论】:

    • 不幸的是,它也不起作用。
      {!! lang::get('knockeasy.music') !!}
    • 我认为knockeasy.music 是在您项目的 lang 文件夹中定义的?通常 lang 消息只是文本。你想打印什么?
    • 是的,它已通过上述技巧成功显示。但我并不完全满意:(
    • 这只是一个带有两种语言文本的标签。它不会调用任何文件或其他东西。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签