سؤال

enter link description here

I am trying about this:

<a href="remote.html" rel="facebox">text</a>

I have this in my twig

            <a href='{{ path('likes_show_names') }}' rel='facebox'>

And than in controller:

        $view= $this->renderView('WallBundle:Statuses:likes_names.html.twig');

    return new Response($view);

No error appear the network (chrome) is displaying code get 200. Facebox open the pop up but the connntent.. is missing...

When i check response => preview its displaying: This request has no preview available

What i am doing wrong please?

هل كانت مفيدة؟

المحلول

I put Facebox in my web/ directory. The file structure looks like this:

web/facebox
web/js/jquery.js

Then, on the routing, I set my default and the ajax-called controller:

vendor_some_bundle_homepage:
    pattern:  /
    defaults: { _controller: VendorSomeBundle:Default:index }

vendor_some_bundle_test:
    pattern:  /test
    defaults: { _controller: VendorSomeBundle:Default:ajax }

Next, I created a simple controller for both routes:

<?php

namespace Vendor\SomeBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{

    public function indexAction()
    {
        return $this->render('VendorSomeBundle:Default:indexTest.html.twig');
    }

    public function ajaxAction()
    {
        return $this->render('VendorSomeBundle:Default:ajaxTest.html.twig');
    }

}

Then, and I think the most important file for you, the page where there is a link that open facebox :

<!-- indexTest.html.twig -->
<html>
    <head>
        <link href="{{ asset('facebox/src/facebox.css') }}" media="screen" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <a href="{{ path('vendor_some_bundle_test') }}"  rel='facebox'>click me</a>
        <script src="{{ asset('js/jquery.js') }}" type="text/javascript"></script>
        <script src="{{ asset('facebox/src/facebox.js') }}" type="text/javascript"></script>
        <script type="text/javascript">

            jQuery(document).ready(function($) {
                $('a[rel*=facebox]').facebox();
            });

        </script>
    </body>
</html>

Important: you should take care of your assets and of the routing. If there is some errors, they should be written in your app/log/dev.log file, or at last in your apache error.log.

Finally, create the view that will be included:

{# ajaxTest.html.twig #}
This is <em>some</em> remote content

This sample gave me the following result:

enter image description here

Note: there is still some assetic errors (see the close button at the right of the image), because I installed facebox quickly. The point of your question was the access to remote content, and here you have a sample you can follow to find your mistake.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top