我已经使用Sonata Admin Bundle创建了表单。然后我创建了自己的控制器(TestController)并覆盖CRUD控制器
我在TestController中添加了一个新功能,
namespace IFI2MainProjectBundleController;
use SymfonyComponentSecurityCoreSecurityContextInterface;
use SymfonyBridgeMonologLogger;
use SonataAdminBundleControllerCRUDController as Controller;
//use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationResponse;
class TestController extends Controller
{
public function getProductPricesAction() {
file_put_contents("/Applications/XAMPP/htdocs/IFI2 CMS/Logs.txt","HELO",FILE_APPEND);
return new Response(json_encode($response));
}
}
然后我试图通过我的javascript代码访问这个函数
<script type="text/javascript">
function test1() {
$.ajax({
type:"POST",
//dataType: "json",
url: '{{ path('main_project.admin.test')}}',
success: function(successMsg) {
alert("successMsg");
},
error: function(errorMsg) {
alert("errorMsg");
}
});
}
</script>
这是我的路线。yml,
main_project.admin.test:
pattern: /getProductPrices/
defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices}
我已经有了这个实体的services.yml条目,
main_project.admin.cobrand:
class: MainProjectBundleAdminTestAdmin
arguments: [~, MainProjectBundleEntityTest, "MainProjectBundle:Test"]
tags:
- {name: sonata.admin, manager_type: orm, group: admin, label: Test}
calls:
- [setTemplate, [edit, MainProjectBundle:Test:edit.html.twig]]
我的回复中出现以下错误,
没有为控制器MainProjectBundleControllerTestController
和当前路由main_project.admin.test
定义_sonata_admin
请帮我怎么嵌入?
谢谢,费萨尔-纳西尔
在管理方法配置中添加新路由Routes
protected function configureRoutes(RouteCollection $collection)
{
parent::configureRoutes($collection);
$collection->add('get_product_prices');
}
删除您的路由main_project.admin.test
新路由的前缀是来自管理员的$baseRouteName,名称为:
base_route_name_get_product_prices
使用
{{ path('base_route_name_get_product_prices') }}
//or with admin
{{ admin.generateUrl('get_product_prices') }}
在routing.yml中添加以下内容:
main_project.admin.test:
pattern: /getProductPrices/
defaults: { _controller: IFI2MainProjectBundle:Test:getProductPrices,"_sonata_admin": "main_project.admin.cobrand" }