我正在使用laravel和angular js构建一个公共的后端办公室消息应用程序,我在我的仪表板控制器(扩展了基本控制器)中定义了一个变量(名为recieved)(显示未读新消息的总数)如下:
信息中心控制器:
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);
}
我正在使用angular来进行数据/变量传输/传递......以下是我的角度代码快照: -
Routes.js
skyla.config(function($routeProvider,$locationProvider) {
$routeProvider.when('/', {
templateUrl : 'templates/main.html',
controller : 'dashboardController'
})
app.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;
}
变量(已接收)显示在我的主要(index / default / home /无论你怎么称呼)laravel的html模板中,使用了角度{{}}语法,如下所示:
HTML(适用于Main.html模板)
<-------------some things-------------------------->
<div class="counter">
<div class="informational">{{dashboardData.stats.recieved}}</div>
</div>
<-------------some other things-------------------------->
并成功显示输出....
但是我想在layout.blade.php中显示相同的数据,我将其用于基本布局目的,以便收到的新消息的数量始终显示在每个用户的导航栏标题中...
我在layout.blade.php(目录:/ 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>
但我得到“Undefined Constant:dashboardData”和“undefined Variable”错误......
以下是我的Laravel routes.php的一瞥: -
routes.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与angular完全相关,我不确定是否将变量值传递给php或angular的布局balde,这将是安全和可行的实践......
我偶然发现了“view :: share”和“view:make”(我试过:返回视图('layout',['dashboardData'=&gt; $ toReturn]);)但是没有非常了解如何完美地做到这一点安全,没有一个错误...
我在“/app/libraries/initiation.php”中也有一个库设置,它将一些数据反映到layout.blade.php ......
我的问题
我将在最简单但最正确的练习中做什么,以便我可以在layout.blade.php中使用angular {{dashboardData.stats.recieved}}语法,而不会出现错误“Undefined Constant”和“undefined Variable”。 .. ??? 请解释一下,告诉我你是否需要更多的信息......我正在接受这项工作,其中前任开发人员已经完成了工作......
答案 0 :(得分:0)
在我看来,刀片和角度之间存在冲突,因为两者都使用{{}}括号。 angular也有自己的渲染视图的方式。 layout.blade.php将{{}}解释为自己的而不是角度。在&#34;纯&#34; html你不会遇到这个问题,因为它是由用户端的角度渲染的。
最简单的方法是做你要求的(在我看来)是将Laravel和Angular文件分开,并使用Laravel作为角应用的API。因此,如果您计划开发一段时间,我会将刀片文件转换为html文件,以防止将来出现问题。 :)
那说黑客攻击这种情况的方法是用刀片作为字符串来回显这一行,或用&amp;#123(用于大括号的html代码)交换花括号。 所以基本上:
<div class="informational">{{ dashboardData.stats.recieved {{ </div>