如何在不渲染另一个页面的情况下对按钮单击执行 运行 操作 Yii2?
How to run action on button click without rendering another page Yii2?
现在我的视图中有一个按钮(实际上它是一个 table 样式为按钮的单元格)。当用户单击此按钮时,我希望控制器对 运行 执行操作。然而,这个动作应该在同一个视图上完成,而不是重定向到另一个页面。
所以,现在的逻辑是这样的:
1) actionIndex 工作并呈现索引视图
2) 在索引视图上有一个按钮,点击它我们 运行 actionSend()
3) actionSend() 有效(发送电子邮件)但我们不会从索引视图重定向到其他地方(只显示成功消息)
查看:
<table style="width:100%; height:100%; color:white">
<tbody>
<tr>
<td><?= Html::a('Send to e-mail' ['result/sendPdf'])?>
</td>
</tr>
</tbody>
</table>
控制器:
public function sendPdf(){
$mailer = Yii::$app->mailer;
$content = Yii::$app->runAction('pdf/email');
$message = $mailer->compose()
->setTo([$profileData->email])
->setFrom(Yii::$app->params['adminEmail'])
->setSubject("Your pdf file is ready")
->attach($content, ['fileName' => 'Document.pdf', 'contentType' => 'application/pdf'])
->send();
}
if (Yii::$app->request->isAjax) {
$mailer = Yii::$app->mailer;
$content = Yii::$app->runAction('pdf/email');
$message = $mailer->compose()
->setTo([$profileData->email])
->setFrom(Yii::$app->params['adminEmail'])
->setSubject("Your pdf file is ready")
->attach($content, ['fileName' => 'Document.pdf', 'contentType' => 'application/pdf'])
->send();
}
AJAX代码
$('#button').click(function(e){
$.ajax({
type: 'GET',
url: your_url,
success: function(result) {
//code
},
error: function(result) {
alert('error');
}});});});
现在我的视图中有一个按钮(实际上它是一个 table 样式为按钮的单元格)。当用户单击此按钮时,我希望控制器对 运行 执行操作。然而,这个动作应该在同一个视图上完成,而不是重定向到另一个页面。
所以,现在的逻辑是这样的: 1) actionIndex 工作并呈现索引视图 2) 在索引视图上有一个按钮,点击它我们 运行 actionSend() 3) actionSend() 有效(发送电子邮件)但我们不会从索引视图重定向到其他地方(只显示成功消息)
查看:
<table style="width:100%; height:100%; color:white">
<tbody>
<tr>
<td><?= Html::a('Send to e-mail' ['result/sendPdf'])?>
</td>
</tr>
</tbody>
</table>
控制器:
public function sendPdf(){
$mailer = Yii::$app->mailer;
$content = Yii::$app->runAction('pdf/email');
$message = $mailer->compose()
->setTo([$profileData->email])
->setFrom(Yii::$app->params['adminEmail'])
->setSubject("Your pdf file is ready")
->attach($content, ['fileName' => 'Document.pdf', 'contentType' => 'application/pdf'])
->send();
}
if (Yii::$app->request->isAjax) {
$mailer = Yii::$app->mailer;
$content = Yii::$app->runAction('pdf/email');
$message = $mailer->compose()
->setTo([$profileData->email])
->setFrom(Yii::$app->params['adminEmail'])
->setSubject("Your pdf file is ready")
->attach($content, ['fileName' => 'Document.pdf', 'contentType' => 'application/pdf'])
->send();
}
AJAX代码
$('#button').click(function(e){
$.ajax({
type: 'GET',
url: your_url,
success: function(result) {
//code
},
error: function(result) {
alert('error');
}});});});