Laravel 5 - 路线未被重定向

时间:2015-09-21 17:27:20

标签: laravel-5

我已经设置了一些资源丰富的路由,并附加了一条通过电子邮件发送PDF的路径。

Route::model('projects.document', 'Document');
Route::resource('projects.document', 'Docs\DocumentController', ['except' => ['index', 'show']]);
Route::post('projects/{projects}/document/{document}/emailPdf', array('as' => 'projects.document.emailPdf', 'uses' => 'Docs\DocumentController@emailPdf'));

一切正常,但我有一个问题。在我的projects.documents编辑页面上,我有一个模式允许输入电子邮件,然后当您单击发送时,电子邮件将被发送到电子邮件地址。再一次,这一切都有效。

我的电子邮件功能如下所示

public function emailPdf(Project $project)
{
    $emailList = Input::get('email-select');
    try{
        $pdf = new DocumentPDF($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false, $project);
        $pdf->storePdf();
        $pdf->sendEmail($emailList);
        $users = User::lists('userEmail');
        return View::make('document.edit', compact('project', 'users'));
    } catch(Exception $e) {
        var_dump("ERROR " . $e);
    }
}

当发送电子邮件时,模式关闭,我仍然在文档编辑页面上,就像我想要的那样。但是,网址会更改为

http://localhost:8000/projects/23/document/2/emailPdf

我知道这是emailPdf功能的路线,但是一旦发送了电子邮件,这应该回到

http://localhost:8000/projects/23/document/2/edit

我怎样才能做到这一点?

由于

1 个答案:

答案 0 :(得分:1)

这里的问题是你只是在同一个网址上创建一个新视图而不是实际重定向到http://localhost:8000/projects/23/document/2/edit。而不是

return View::make('document.edit', compact('project', 'users'));

return redirect->route(<your root alias here>);

或在这种情况下只是

return redirect->back();

http://laravel.com/docs/5.1/responses#redirects