我正在使用 laravel 和 angular js 构建一个常见的后端办公消息传递应用程序,我的仪表板控制器(扩展基本控制器(中有一个变量(名为 received((显示未读新消息的总数(,定义如下:
仪表板控制器:
var $data = array();
public function dashboardData(){
$toReturn = array();
$toReturn['siteTitle'] = $this->data['panelInit']->settingsArray['siteTitle'];
//------other things-----------//
$toReturn['stats'] = array();
//------some other things-----------//
$toReturn['stats']['recieved'] = messagesList::where('userId',$this->data['users']->id)->where('messageStatus',1)->count();
}
return json_encode($toReturn);
}
我正在使用角度到数据/变量传输/传递...以下是我的角度代码快照:-
路线.js
skyla.config(function($routeProvider,$locationProvider) {
$routeProvider.when('/', {
templateUrl : 'templates/main.html',
controller : 'dashboardController'
})
应用.js
skyla.controller('mainController',function(dataFactory,$rootScope,$route,$scope) {
var data = $rootScope.dashboardData;
$scope.phrase = $rootScope.phrase;
$scope.dashboardData = data;
$rootScope.phrase = data.language;
$scope.phrase = data.language;
}
变量(接收(通过使用角度{{}}语法显示在Laravel的主要(索引/默认/主页/无论您怎么称呼它(html模板中,如下所示:
HTML(用于主模板.html模板(
<-------------some things-------------------------->
<div class="counter">
<div class="informational">{{dashboardData.stats.recieved}}</div>
</div>
<-------------some other things-------------------------->
它成功地显示了输出。
但我想在 layout.blade 中显示相同的数据.php我将其用于基本布局目的,以便收到的新消息的数量始终出现在每个用户的导航栏标题中......
我在 layout.blade.php (directory:/app/views( 中使用了相同的 html 结构,角度 {{dashboardData.stats.recieved}} 语法为:
HTML(用于布局边栏选项卡(
<body ng-app="skyla" ng-controller="mainController">
<-------------some things-------------------------->
<div class="nav">
<div class="informational">{{dashboardData.stats.recieved}}</div>
</div>
<-------------some other things-------------------------->
</body>
但是我收到"未定义的常量:仪表板数据"和"未定义的变量"错误...
以下是我的Laravel路线的一瞥.php:-
路线.php
Route::group(array('prefix'=>'/','before'=>'auth.Ui|auth.token|api.csrf'),function(){
Route::get('/','DashboardController@index');
Route::get('/dashboard','DashboardController@dashboardData');
Route::get('/dashboard/baseUser','DashboardController@baseUser');
//-------------some things-------------//
Route::post('/dashaboard','DashboardController@dashaboardData');
我对带有角度的 laravel很陌生,我不确定是将变量值传递给带有 php 或角度的布局秃头,这将是安全和可行的做法......
我偶然发现了"view::share"和"view:make"(我试过:return view('layout', ['dashboardData' => $toReturn](;)事情,但不太明白如何完美安全地做到这一点而没有一个错误......
我在"/app/libraries/initiation.php"中还有一个库设置,它将一些数据反映到 layout.blade.php...
我的问题
在最简单但最正确的实践中,我会怎么做,以便我可以在 layout.blade 中使用角度 {{dashboardData.stats.recieved}} 语法.php而不会出现错误"未定义的常量"和"未定义的变量"...???请解释一下,告诉我您是否需要更多信息...我正在接手这项工作,中间有一个前开发人员没有完成工作......
,刀片和角度之间存在冲突,因为两者都使用了{{ }}括号。角度也有其自己的渲染视图的方式。layout.blade.php 将 {{}} 解释为自己的而不是角度。在"纯"html中,您没有这个问题,因为它是由用户端的角度渲染的。
完成您要求的最简单方法(在我看来(是将Laravel和Angular文件分开,并使用Laravel作为角度应用程序的API。因此,如果您计划开发一段时间,我会将刀片文件转换为 html 文件,以防止将来出现头痛。:)
也就是说,破解这种情况的一种方法是用刀片作为字符串回显这一行,或者用 {(大括号的 html 代码(交换大括号。所以基本上:
<div class="informational">{{ dashboardData.stats.recieved {{ </div>