在 Symfony2 中验证搜索表单后更新 AngularJS 范围
嗨,各位开发人员,
我们必须用AngularJS在Symfony2中重写一个软件应用程序,我们使用Symfony2用于MVC目的,使用AngularJS用于有用的功能。
这是我们的问题,我们首先在我的Symfony2视图中使用AngularJS在表格中显示我们的客户:
var app = angular.module('appName', []);
app.controller('clientsCtrl', function ($scope, $http){
$scope.loading = true;
$http.post('{{ url(generatedScope) }}').then(function(response){
$scope.clients = response.data;
$scope.order = function(predicate){
$scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse :false;
$scope.predicate = predicate;
}
},function(response){
// TODO: handle the error somehow
})
});
这是由Symfony2控制器发送的Twig var,如下所示:{{ url(generatedScope) }}
/**
* @Route("/clients", name="index")
*/
public function indexAction(Request $request)
{
$form = $this->createForm(SearchClients::class, null);
$form->handleRequest($request);
if($form->isValid()){
//TODO: Get form params and update angularJS scope somehow
}
return $this->render('clients/list.html.twig', [
'generatedScope' => 'getClients',
'form' => $form->createView()
]);
}
getClients
是打开视图时默认路由的名称(我们没有使用 Doctrine):clients/list.html.twig
/**
* @Route("/clients/list/json", name="getClients")
*/
public function getClientsAction()
{
$clients = new Clients($this->get('database_connection'));
$response = new JsonResponse($clients->getClients());
return $response;
}
所以基本上我们的控制器发送的是:,这是我们客户端的json集合,然后我们以这种方式在视图中的表中显示客户端:generatedScope
127.0.0.0:8000/clients/list/json
<tr ng-repeat="x in clients | filter : test | orderBy:predicate:reverse">
<td>#{{ x.cli_id }}</td>
<td>{{ x.cli_lastname }}</td>
<td>{{ x.cli_firstname }}</td>
</tr>
我们有一个搜索表单,与显示我们客户的表格相同的页面,我们收集名字和姓氏并调用一个操作来检索json响应以更新我们的角度范围,我们设法以这种方式检索响应:
/**
* @Route("/tiers/list/json/search", name="searchClients")
*/
public function searchClientsAction(){
$request = new Request($_POST);
$request = $request->query->get('search_clients'); //form name
$clients = new clients($this->get('database_connection'));
$response = new JsonResponse($clients->searchClients($request));
return $response;
}
我们尝试在我们的:indexAction
if($form->isValid()){
//TODO: Get form params and update angularJS scope somehow
return $this->render('clients/list.html.twig', [
'generatedScope' => 'searchClients',
'form' => $form->createView()
]);
}
但正如你所看到的,它不起作用。
那么,在验证 Symfony2 表单后,我们如何更新 angularJS 作用域?
如果有人遇到此问题...会很高兴阅读他的意见!
此致敬意
迪伦