Php Symfony2+AngularJS
我一直在使用symfony2开发一个web应用程序,现在我添加了一些Angularjs 我有一个输入字段,你可以按名称过滤产品,问题如下,我有一个php控制器,我做一些查询,然后我渲染视图,传递参数,在这种情况下,我会这样做Php Symfony2+AngularJS,php,angularjs,symfony,dependency-injection,doctrine-orm,Php,Angularjs,Symfony,Dependency Injection,Doctrine Orm,我一直在使用symfony2开发一个web应用程序,现在我添加了一些Angularjs 我有一个输入字段,你可以按名称过滤产品,问题如下,我有一个php控制器,我做一些查询,然后我渲染视图,传递参数,在这种情况下,我会这样做 ....... return $this->render('default/index.html.twig',array( 'products' => $products)); 我的问题是,如果我想使用angular按名称筛选这些产品,我如何才能做到这一点
.......
return $this->render('default/index.html.twig',array( 'products' => $products));
我的问题是,如果我想使用angular按名称筛选这些产品,我如何才能做到这一点?在官方的angular教程中,我想要一个类似phonecat的应用程序,在这里你可以通过名字进行过滤
到目前为止,我已经做到了:
var StoreApp = angular.module('StoreApp', []);
StoreApp.controller('StoreCtrl', function($scope,$http){
$http.get('http://localhost:8000').success(function(data){
$scope.stores = data;
});
});
问题是,我不知道将哪个URL放入GET参数,数据库中有几个表,我不知道如何处理它们。
我正在使用端口8000上的本地web服务器和Doctrine。为了使用angular在客户端过滤数据,您需要使用javascript将数据从symfony2应用程序获取到angular范围 有多种方法可以做到这一点,快速而肮脏的方法是直接在angular ng init属性中呈现php中的products数组,如中所述 在我看来,将数据导入angular应用程序的最佳方法是创建一个RESTful端点,将JSON格式的产品数据公开给angular应用程序。使用symfony2,如果使用类似于以下代码段的控制器查询,则可以创建一个返回产品数据的控制器:
class ProductController
{
public function getProductsAction()
{
$products = $this->getRepository('Products')->findAll(),
return new JsonResponse($products);
}
}
我终于可以解决这个问题了 这是我的控制器
public function getAllStoresAction()
{
$em = $this->getDoctrine()->getEntityManager();
$query = $em->createQuery('SELECT s FROM AppBundle\Entity\Store s');
$result = $query->getArrayResult();
return new Response(json_encode($result), 200);
}
然后是我的app.js
var storeApp = angular.module('storeApp', []).config(function($interpolateProvider){
$interpolateProvider.startSymbol('{[{').endSymbol('}]}');
});
storeApp.controller('StoreCtrl',function($scope,$http){
$http.get('/get-all-stores').success(function(data){
$scope.stores = data;
});
$scope.orderProp = 'name';
});
还有我的路线
get_all_stores:
path: /get-all-stores
defaults: { _controller: AppBundle:Default:getAllStores}
我设法找回了数据,但问题是它返回了一个空数组。
搜索一下,我发现我没有序列化数据,php不会自动进行序列化,所以我使用了这个getArrayResult;而且效果很好
谢谢彼得·皮尔德曼的帮助