0

リンクをクリックしたときに画像を表示したいのですが、コントローラーから送信する方法がわかりません。どうすれば解決できますか?

public function getPictureAction() {
        $html  =    '<div id="comment_list_div">';
        $html .=          '<div id="comment_list_div_img">';
        $html .=                '<div id="comment_list_div_im">';
        $html .=                     '<a href=""><img src="{{ asset('bundles/fds/images/Picture.png') }}"/></a>';
        $html .=                 '</div>';
        $html .=          '</div>';
        $html .=          '</div>';


        $return = array( "html" => $html);
        $return = json_encode($return);
        return new Response($return, 200, array('Content-Type'=>'application/json'));

    }
4

1 に答える 1

1

これを行う正しい方法は、htmlコードをテンプレートに移動し、アクションでレンダリングすることです。

コントローラーで:

use Symfony\Component\HttpFoundation\JsonResponse;

// ...

public function getPictureAction() {

    // load your picture from the db

    $content = $this->renderView(
        'AcmeHelloBundle:Json:JsonResponse.html.twig',
        // pass the picture to your template:
        array('imagePath' => $image->getPath())
    );

    return new JsonResponse(
        $content,
        200,
        array('Content-Type'=>'application/json')
    );
}

そしてあなたのテンプレート:

<div id="comment_list_div">
    <div id="comment_list_div_img">
        <div id="comment_list_div_im">
            {# use the vairable name you passed to this template to acces your image #}
            <a href=""><img src="{{ asset(imagePath) }}"/></a>
        </div>
    </div>
</div>

また、アセットが適切に配置されていることを確認してください。

php app/console assets:install
php app/console assetic:dump --env=dev
于 2013-10-20T22:12:28.227 に答える