Passing a PHP variable to JavaScript in a Blade template(在刀片模板中将PHP变量传递给JavaScript)
问题描述
JavaScript是否可以从Laravel Blade模板中的控制器获取变量?
示例: 我有以下代码:
$langs = Language::all();
return View::make('NAATIMockTest.Admin.Language.index',compact('langs'));
我可以获取$langs并将其传递给JavaScript吗?我已经用过PHP-Vars-To-Js-Transformer了。但是当我将JavaScript::put()用于控制器中的两个功能时。它没有起作用。有什么帮助吗?
这是我在控制器中的创建函数:
public function create()
{
    $names = $this->initLang();
    Javascript::put([
        'langs' => $names
    ]);
    
    return View::make('NAATIMockTest.Admin.Language.create',compact('names'));
}
这是我的观点:
@extends('AdLayout')
@section('content')
<script type="text/javascript">
    var app = angular.module('myApp', []);
    app.controller('langCtrl', function($scope) {
        $scope.languages = langs;
    });
</script>
    
<div class="container-fluid" ng-app="myApp" ng-controller="langCtrl">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2>Create language</h2>
                </div>
                    
                <div class="panel-body">
                    {!! Form::open() !!}
                        <p class="text-center">
                            {!! Form::label('Name','Language: ') !!}
                            <input type="text" name="searchLanguage" ng-model="searchLanguage">
                        </p>
    
                        <select name="Name[]" multiple size="10" ng-model="lang" ng-click="show()">
                            <option value="@{{v}}" ng-repeat="(k,v) in languages | filter:searchLanguage">
                                @{{v}}
                            </option>
                        </select><br>
    
                        <div class="text-center">
                            {!! Form::submit('Create',['class'=>'btn btn-primary']) !!} 
                            {!!   Html::linkAction('NAATIMockTestLanguageController@index', 'Back', null, array('class' => 'btn btn-primary')) !!}
                        </div>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
配置文件夹中的My javascript.php:
<?php
return [
    'bind_js_vars_to_this_view' => 'footer',
    'bind_js_vars_to_this_view' => 'NAATIMockTest.Admin.Language.create',
    'bind_js_vars_to_this_view' => 'NAATIMockTest.Admin.Language.edit',
    
    'js_namespace' => 'window',
];
想法是: 我在MySQL中有一种表语言。我想要显示有多个属性可供选择的下拉列表,我还想用angularjs进行搜索。这就是我要将变量从控制器传递到JavaScript的原因。此外,我在LanguageController内部有一个名为initLang的函数,用于检查数据库内是否存在任何语言,它不会显示在Create the view的下拉列表中。
推荐答案
为我提供一个工作示例。
控制器:
public function tableView()
{
    $sites = Site::all();
    return view('main.table', compact('sites'));
}
查看:
<script>    
    var sites = {!! json_encode($sites->toArray()) !!};
</script>
要防止恶意/意外行为,您可以按照Jon在链接到此的注释中的建议使用JSON_HEX_TAGSO answer
<script>    
    var sites = {!! json_encode($sites->toArray(), JSON_HEX_TAG) !!};
</script>
                        这篇关于在刀片模板中将PHP变量传递给JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在刀片模板中将PHP变量传递给JavaScript
				
        
 
            
        - 如何调试 CSS/Javascript 悬停问题 2022-01-01
 - 在不使用循环的情况下查找数字数组中的一项 2022-01-01
 - 为什么悬停在委托事件处理程序中不起作用? 2022-01-01
 - 如何显示带有换行符的文本标签? 2022-01-01
 - 是否可以将标志传递给 Gulp 以使其以不同的方式 2022-01-01
 - 如何向 ipc 渲染器发送添加回调 2022-01-01
 - 为什么我的页面无法在 Github 上加载? 2022-01-01
 - 从原点悬停时触发 translateY() 2022-01-01
 - 使用 iframe URL 的 jQuery UI 对话框 2022-01-01
 - 我不能使用 json 使用 react 向我的 web api 发出 Post 请求 2022-01-01
 
						
						
						
						
						
				
				
				
				