c'è qualche modo in cui JavaScript può ottenere la variabile dal controller compatto Laravel-5.laravel-5 passa variabile a JavaScript
Esempio: Ho il codice qui sotto:
$langs = Language::all();
return View::make('NAATIMockTest.Admin.Language.index',compact('langs'));
posso trovare questo Langs e passarlo a JavaScript? Ho già utilizzato PHP-Vars-To-Js-Transformer. Ma quando uso JavaScript :: put per due funzioni nel controller. Non ha funzionato. Qualsiasi aiuto?
Questo è il mio codice utilizzando PHP-Vars-To-Js-Transformer:
LanguageController: Questo è il mio creare e modificare la funzione:
public function create()
{
$names = $this->initLang();
Javascript::put([
'langs' => $names
]);
return View::make('NAATIMockTest.Admin.Language.create',compact('names'));
}
public function edit($id)
{
//
$lang = Language::findOrFail($id);
$names = $this->initLang();
Javascript::put([
'langs' => $names
]);
return View::make('NAATIMockTest.Admin.Language.edit', compact('lang'));
// return View::make('NAATIMockTest.Admin.Language.edit');
}
questa è la mia opinione a creare:
@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('NAATIMockTest\[email protected]', 'Back', null, array('class' => 'btn btn-primary')) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
Questa è la mia opinione edit:
@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>Edit #{{ $lang->id}}</h2></div>
<div class="panel-body">
{!! Form::model($lang) !!}
{!! Form::label('Name','Language: ') !!} {{ $lang->Name }}
<!-- {!! Form::text('Name',null,['disabled']) !!}<br> -->
{!! Form::hidden('id') !!}<input type="text" name="searchLanguage" ng-model="searchLanguage">
</p>
<select name="Name[]" size="10">
<option value="@{{v}}" ng-repeat="(k,v) in languages | filter:searchLanguage">
@{{v}}
</option>
</select><br>
<div class="text-center">
{!! Form::submit('Update',['class'=>'btn btn-info']) !!}
{!! Html::linkAction('NAATIMockTest\[email protected]', 'Back', null, array('class' => 'btn btn-primary')) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
@endsection
mia javascript.php nella cartella config:
<?php
return [
/*
|--------------------------------------------------------------------------
| View to Bind JavaScript Vars To
|--------------------------------------------------------------------------
|
| Set this value to the name of the view (or partial) that
| you want to prepend all JavaScript variables to.
|
*/
'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',
/*
|--------------------------------------------------------------------------
| JavaScript Namespace
|--------------------------------------------------------------------------
|
| By default, we'll add variables to the global window object. However,
| it's recommended that you change this to some namespace - anything.
| That way, you can access vars, like "SomeNamespace.someVariable."
|
*/
'js_namespace' => 'window',
];
L'idea è: Ho una lingua tabella in mysql. Voglio mostrare l'elenco a discesa con più attributi da scegliere e voglio anche cercare con angularjs. Ecco perché voglio passare la variabile dal controller a JavaScript. Inoltre, ho la funzione all'interno di LanguageController chiamata initLang per verificare se esiste una lingua all'interno del database, non è visualizzata all'interno dell'elenco a discesa in create view.
puoi anche mostrare come desideri utilizzare lang nel tuo codice javacript? – Digitlimit
Dato che stai già utilizzando un pacchetto, ti preghiamo di mostrarci il codice che non funziona. (modifica la tua domanda) – lukasgeiter
Forse le due funzioni hanno reso la vista o parziale, hai scelto di associare le variabili javascript a? –