0

メールを送信する特定の機能の後にリダイレクトできません。私の機能は次のとおりです。

public function emailAction($emails, $url)
{

    foreach($emails as $email)
    {
        $message = \Swift_Message::newInstance()
            ->setSubject('Updates in Symfony Blog')
            ->setFrom(array('blog@symfonyblog.com' => 'Symfony Blog'))
            ->setTo($email["email"])
            ->setBody(
            $this->renderView(
                'NEWSBlogBundle:Default:email.txt.twig',
                array('url' => $url)
            )
        )
        ;
        $this->get('mailer')->send($message);
    }

    return $this->redirect($this->newpostAction());
    //return $this->redirect($this->generateUrl('NEWSBlogBundle_homepage'));

}

メールは問題なく送信されますが、リダイレクトするとエラーが発生します。

ErrorException: 警告: ヘッダーに複数のヘッダーが含まれていない可能性があります。C:\path\to\webroot\Symfony\app\cache\dev\classes.php 行 3899 で新しい行が検出されました

  1. C:\path\to\webroot\Symfony\app\cache\dev\classes.php 行 3899
  2. at ErrorHandler->handle('2', 'ヘッダーに複数のヘッダーを含めることはできません。改行が検出されました', 'C:\path\to\webroot\Symfony\app\cache\dev\classes.php', ' 3899', array('this' => object(RedirectResponse), 'name' => 'Location', 'values' => array('/app_dev.php/blog', object(ResponseHeaderBag), ' /app_dev へのリダイレクト.php/blog /app_dev.php/blogへのリダイレクト. ', '1.0', '302', 'Found', null), 'value' => object(ResponseHeaderBag)))
  3. at header('Location: Cache-Control: no-cache Date: Wed, 17 Jul 2013 11:56:17 GMT Location: /app_dev.php/blog ', false) in C:\path\to\webroot\Symfony\ app\cache\dev\classes.php 行 3899
  4. C:\path\to\webroot\Symfony\app\cache\dev\classes.php 行 3914 の Response->sendHeaders() で
  5. C:\path\to\webroot\Symfony\web\app_dev.php 行 27 の Response->send() で

「ヘッダー」については何も変更していませんが(そして、それが何であるかはよくわかりません!)。私の app_dev.php は次のとおりです。

<?php

use Symfony\Component\HttpFoundation\Request;

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1'))
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';

$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

両方をリダイレクトする2つの異なる方法(ルーティングとコントローラーの直接呼び出しによる)を試しましたが、どちらも同じエラーが発生しましたが、URLを入力するとページがロードされました。

このエラーが何であり、どのように修正すればよいかわかりません!

4

2 に答える 2

0

詳しく言えば、あなたの問題は の戻り値でし$this->newpostAction()た。通常はResponseオブジェクトです。Locationただし、リダイレクトでは、ヘッダーを介してクライアントに送信できる uri/route が必要です。リダイレクトは常にクライアント側の方向転換です。->forward('AcmeBundle:Demo:index')ただし、別のコントローラー アクションに内部的に転送するために使用できます。この場合、クライアントの URL は変更されません。

于 2013-07-18T12:27:07.027 に答える