PHP 5.4.7 を使用して、Symfony 2.1.4 の最新バージョンで新しいプロジェクトに取り組んでいます。
私は readme ファイルに目を通し、app/check.php
設定に合格しました。Acme Demo は正常に動作し、すべてのページがテストされました。
次に、自分のバンドルを追加し、 を編集してapp/AppKernl.php
、自分のバンドルから自分のバンドルapp/routing.yml
をロードし、自分でrouting.yml
をテストしindexAction()
ましたSetupController
return $this->render('MyBundle:Setup:index.html.twig');
ページは期待どおりに表示されます。
次に、アノテーションを使用するように変更したため、コントローラーファイルは次のようになりました
// ...
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
// ...
class SetupController extends Controller
{
/**
* @Route("/", name="_setup")
* @Template
*/
public function indexAction(){
// This method is totally empty.
// Uncommenting the following line actually works, but I want to stick with
// annotations if possible
// return $this->render('MyBundle:Setup:index.html.twig');
}
}
そしてルーティングファイルは
_setup:
resource: "@MyBundle/Controller/SetupController.php"
type: annotation
ここで、ページは 500 内部サーバー エラー (LogicException) をスローし、次のメッセージが表示されます。
The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?
$this->render('...')
に行を追加しようとしましたindexAction()
が、ページはレンダリングされますが、それがないと、この 500 エラーだけです。
Acme Demo は今でも問題なく動作しています。の代わりに@Template('MyBundle:Setup:index.html.twig')
andを使用してみましたが、それでも同じエラーが発生します。メソッドが問題なく見つけたので、テンプレート ファイルは正しい場所に配置されます。@Template()
@Template
$this->render()
構成ファイルで注釈をオフにしていないことを確認しました。また、開発用と本番用の両方のキャッシュをクリアしようとしましたが、それでもうまくいきません。
回避策として使用できます$this->render()
が、Symfony で使用できないという注釈の何が問題なのかを知りたかったのです。
事前に助けやアドバイスをありがとう!他に役立つ情報があればお知らせください。