53

JavaScriptがLaravel Bladeテンプレートのコントローラーから変数を取得できる方法はありますか?

例: 以下のコードがあります。

$langs = Language::all();
return View::make('NAATIMockTest.Admin.Language.index',compact('langs'));

取得$langsして JavaScript に渡すことはできますか? 私はすでにPHP-Vars-To-Js-Transformer を使用しました。しかしJavaScript::put()、コントローラーで2つの機能を使用する場合。うまくいきませんでした。何か助けはありますか?

これは、コントローラーの作成関数です。

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']) !!}&nbsp;
                            {!!   Html::linkAction('NAATIMockTest\LanguageController@index', 'Back', null, array('class' => 'btn btn-primary')) !!}
                        </div>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

configフォルダーの私の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 に変数を渡したいのです。さらに、言語がデータベース内に存在するかどうかを確認する initLang と呼ばれる LanguageController 内の関数を持っています。ビューを作成する際のドロップダウン リスト内には表示されません。

4

10 に答える 10

5
$langs = Language::all()->toArray();
return View::make('NAATIMockTest.Admin.Language.index', [
    'langs' => $langs
]);

その後、視野に入る

<script type="text/javascript">
    var langs = {{json_encode($langs)}};
    console.log(langs);
</script>

かわいくない

于 2015-05-06T14:43:25.553 に答える