Web サイトでメディアを管理するために Sonata MediaBundle をインストールしました。すべて正常に動作していますが、今度は MediaController の viewAction をカスタマイズする必要があります。元の MediaController をコピーして変更しました。着席ですsrc/Application/Sonata/MediaBundle/Controller
。を使用して MediaBundle を拡張したときにそのフォルダーが作成されたので、そこに置きましたeasy-extends
。ルーティングに注釈を使用しているため、ルーティング ファイルの関連部分は次のようになります。
media:
resource: '@Application/Sonata/MediaBundle/Controller'
type: annotation
prefix: /media
私のコントローラーはこのように見えます:
/**
* Log controller.
*
* @Route("/media")
*/
class MediaController extends BaseMediaController {
/**
* @throws NotFoundHttpException
*
* @param string $id
* @param string $format
*
* @return Response
*
* @Route("/view/{video_id}", name="media_view")
* @Method("GET")
* @Template()
*/
public function viewAction($id, $format = 'reference')
{
$media = $this->getMedia($id);
if (!$media) {
throw new NotFoundHttpException(sprintf('unable to find the media with the id : %s', $id));
}
if (!$this->get('sonata.media.pool')->getDownloadSecurity($media)->isGranted($media, $this->getRequest())) {
throw new AccessDeniedException();
}
return $this->render('SonataMediaBundle:Media:view.html.twig', array(
'media' => $media,
'formats' => $this->get('sonata.media.pool')->getFormatNamesByContext($media->getContext()),
'format' => $format
));
}
}
注釈を除いて、これまでのところ変更はありません。URL にアクセスしようとすると、次のエラーが表示されます。http://
my-server
/media/view/4
Cannot load resource "@Application/Sonata/MediaBundle/Controller". Make sure the "Application/Sonata/MediaBundle/Controller" bundle is correctly registered and loaded in the application kernel class.
500 Internal Server Error - FileLoaderLoadException
バンドルは AppKernel.php にロードされます。
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
ここで何が問題なのか分かりますか? ルートの書き方をいろいろ試してみましたが、何も変わりません。MediaCONtroller をオーバーライドするより良い方法はありますか? 前もって感謝します。