Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2] Wstrzykiwanie ścieżki z kodu .js dokleja nazwę rotuingu
Forum PHP.pl > Forum > PHP > Frameworki
basso
Witam.
Wracam po cieżkiej rozkmince.

Mam taki problem. W kodzie .js wstrzykuje do atrybutu src adres obrazka czyli w <img src=""> ścieżkę. Wstrzykuje jako $("#obrazek").attr("src,"/zdjecia/domek.jpg")
Wykrzacza mi się bo zamiast adresu:/app_dev.php/zdjecia/domek.jpg dostaję /app_dev.php/hello/zdjecia/domek.jpg

Czy ktoś może się orientuje dlaczego dopina mi tą nazwę z urla?
Url wygląda tak : http://localhost/stronatest/web/app_dev.php/hello/test

Próbowałem wstrzyknąć: $("#obrazek").attr("src,"{{ asset(/zdjecia/domek.jpg) }}") ale to nie działa ;/

Prośba o pomoc kto kojarzy jak to rozwiązać.

destroyerr
Cytat
ale to nie działa ;/

Co oznacza, że nie działa? Jeżeli przestawiony tutaj kod przekopiowałeś prosto z pliku to się nie dziwię, że nie działa. Załóżmy, że to "literówki" to pytanie czy plik, w którym masz to napisane jest szablonem Twiga? Czy to zwykły plik js?

Inna sprawa, że dobrze byłoby jednak skonfigurować wirtualny host na serwerze.
basso
W pliku web/bundles itd... /js/main.js wstrzykuję stamtąd kod do do kodu html. Jest to plik .layout.html.twig, tam jest ten <img któremu zamieniam adres src.

Wrzuciłem to w Vhosta i dalej to samo.
NetworkError: 404 Not Found - hytytyp/pgsf2.pgsf2/hello/bundles/testbundle/zdjecia/domek.jpg?i=1372425212696"
hytytyp= http:// bo mi linka robiło smile.gif

Prosty przykład w pliku layout.html.twig
  1.  
  2. <a href="#" class="zmien">Zmien</a>
  3. <img src="" alt="" id="obrazek">
  4.  


w pliku JS main.js
  1.  
  2.  
  3. $(document).ready(function()
  4. {
  5. $(".zmien").click(function(){
  6.  
  7. $("#obrazek").attr("src","bundles/testbundle/zdjecia/domek.jpg");
  8.  
  9. });
  10.  
  11. });
  12.  



I zamiast w widoku dostać <img src="/bundles/testbundle/zdjecia/domek.jpg" /> dostaję <img src="/hello/bundles/testbundle/zdjecia/domek.jpg" />
c1chy
Jedyne rozwiązanie jakie przychodzi mi na myśl to zrobić w templatce przed zaincludowaniem pliku js coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. var obrazek= "{{ asset('sciezka/do/obrazek.pnh') }}";
  3. </script>
[JAVASCRIPT] pobierz, plaintext


w ten sposób utworzysz zmienną w JS o zasięgu globalnym więc w includowanym pliku możesz wtedy zrobić np:

[JAVASCRIPT] pobierz, plaintext
  1. alert(obrazek)
[JAVASCRIPT] pobierz, plaintext


i powinieneż dostać poprawną ścieżkę do obrazka.

Innym sposobem jest użycie https://github.com/FriendsOfSymfony/FOSJsRoutingBundle ale przyznam się szczerze że jeszcze nie miałem okazji tego używać.
basso
Nie no zmiana ściezki czy czegokolwiek przez .js to normalne rzeczy ktore robi każdy colorbox... no wszędzie się tego używa, czy to podmiany tła czy różne cuda. Dlatego mnie to zdziwiło hmmm
Jeśłi na dzień dobry dam asset , to adres poprawny daje, tylko przy wstrzykiwaniu przez .js dodaje mi nazwę z routingu.

OK DZIAŁA => FIREBUG POKAZUJE ADRES spod którego wołano obrazek czyli TEN ZŁY na czerwono => ścieżka natomiast jest w porządku.

Sory za zamieszanie, ale to może być złudne smile.gif
destroyerr
Cytat
I zamiast w widoku dostać <img src="/bundles/testbundle/zdjecia/domek.jpg" /> dostaję <img src="/hello/bundles/testbundle/zdjecia/domek.jpg" />

No ale to są podstawy, adresy względne i bezwzględne.

W pliku js, który nie jest przetwarzany przez Twiga nie ma sensu stosować funkcji asset.

Cytat
Innym sposobem jest użycie https://github.com/FriendsOfSymfony/FOSJsRoutingBundle ale przyznam się szczerze że jeszcze nie miałem okazji tego używać.

Tylko, że problem nie dotyczy routingu.
basso
Wiem wiem, odwołania były dobre, tylko obrazka nie było.

Chodzi o firebug który troszkę myli. Wstrzykiwany był adres zdjęcia "/bundles/testbundle/zdjecia/domek.jpg?i=1372425212696". I teraz nie było obrazka pod tym adresem i świecił się w firebugu adres:
http//pgsf2.pgsf2/hello/bundles/testbundle/zdjecia/domek.jpg?i=1372425212696"

Patrzę zatem => no ścieżka jest zła. Bo jak widać doklejone jest hello. A to jest odpowiedź z serwera, że spod tej akcji (tego rotingu) był wołany taki obrazek. A ,że go nie było to dawaj na czerwono. Szkoda, że tak zmyla bo ściężkę do obrazka (ale żywcem w kodzie trzeba patrzeć) jest DOBRA, tylko go nie było.

Zatem wina po stronie firebug i moje niedopatrzenie, bo trzeba było od razu w kod żywcem ziurnąć, a nie patrzeć co odpowiada serwer. W sumie spod dobrej akcji odpowiedział... ale bez sensu , że adres obrazka dokleił no nic będę wiedział na przyszłość.

Dzięki za pomoc destroyerr .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.