我目前正在发现Symfony,我在从我的一个控制器调用函数时遇到了一些麻烦。
> class CsvController extends Controller {
public function generateCsvAction(){
$conn=$this->get('database_connection')
$results=$conn->query("
SELECT *
FROM external_attribute;
")
$response=new StreamedResponse();
$response->setCallback(function() use($results)){
$handle=fopen("/home/basile/Documents/backend/src/CampaignBundle/Controller/test.csv","w+");
fputcsv($handle,array('test1
test2,
test3,
test4,
test5,
test6,
test7,
test8')
),';');
}
fclose($handle);
}
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers->set('Content-Disposition','attachment; filename="test.csv"');
return $response;
}
我已经在routing.yml中设置了所有内容:
export_csv:
defaults: { _controller: CampaignBundle:Controller:CsvController.php }
现在我想从名为“index.html.twig”的文件中的按钮调用它。我知道我们可以从控制器渲染一些变量和数组,但在这里我直接想要调用一个函数
如果您有任何想法,那将非常受欢迎!
答案 0 :(得分:2)
直接从模板中调用控制器:
{{ render(controller(
'NameOfYourBundle:NameOfYourClass:NameOfYourFunction'
)) }}
如果控制器需要参数(例如):
{{ render(controller(
'NameOfYourBundle:NameOfYourClass:NameOfYourFunction', { 'id': 3 }
)) }}
答案 1 :(得分:0)
您可以直接从视图中执行该功能:
{% render "YourBundle:Csv:generateCsv" with { 'url': 'export_csv' } %}
通过JS和AJAX:
$("#button").on('click', function() {
$.ajax({
url: {{render(controller("YourBundle:Csv:generateCsv")) }},
success: function(result){
...
}});
});