Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony] sfFormExtraPlugin nie działa.
tOm-i
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.05.2005

Ostrzeżenie: (0%)
-----


Walczę z tym pluginem od jakiegoś czasu konkretnie z częścią dotyczącą "Autocomplete"
Min, w tym wątku.
W końcu się wkurzyłem i zrobiłem dokładnie tak jak TU.
I też nie działa.
Może po prostu nie mam czegoś w php5 wkompilowane lub inny brak tego typu ?

Dodam, że napeno dobrze linkuje w tej częsci
  1. // apps/frontend/modules/article/templates/_form.php
  2. <?php use_javascript('/sfFormExtraPlugin/js/jquery.autocompleter.js') ?>
  3. <?php use_stylesheet('/sfFormExtraPlugin/css/jquery.autocompleter.css') ?>
  4.  
  5. <!-- ... -->



będę wdzięczy za pomoc.




Ten post edytował tOm-i 21.08.2009, 10:47:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Whisller
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 5
Dołączył: 29.03.2006
Skąd: Poznań

Ostrzeżenie: (0%)
-----


@tOm-i - Ale co dokładnie nie działa? Wywala jakieś błędy JS, czy też PHP?
Bo dla testu odpaliłem ten plugin na kompletnie czystym projekcie (nowo utworzonym) i wszystko działa wyśmienicie z pluginem sfFormExtraPlugin.

Żeby nie było że jestem gołosłowny załączam screena [img=http://img40.imageshack.us/img40/6130/picture4bcv.th.png]

Może w kilku słowach co i jak po kolei zrobiłem.

1. Instalacja pluginu
2. Symfony cc
3. Załączenie jQuery
4. Ustawienie struktury bazy danych (ORM - Propel). Baza Users, z dwoma polami Id oraz Name
5. W metodzie configure() klasy UsersForm $this->widgetSchema['name'] = new sfWidgetFormPropelJQueryAutocompleter(array( 'model' => 'Users', 'url' => $this->getOption('url')));
A reszta wygląda jak z manuala symfony.

Ten post edytował Whisller 20.08.2009, 22:15:44
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Ja też nie miałem najmniejszych problemów.
W Twoim listingu nie widzę jQuery, kolejność ładowania JS tez ma jakieś znaczenie.
Zacznij od nowa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Jeśli coś nie działa to debuguj, debuguj i jeszcze raz debuguj.

Nie podałeś nam w zasadzie żadnych informacji. Jak już wyżej zostało zauważone, nie wiemy nawet czy dołączyłeś jQuery.
Bawimy się w wróżbiarstwo, więc ok. Moja wróżba: pliki jquery.autocompleter.css i jquery.autocompleter.js nie istnieją w lokalizacji w jakiej powinny. Polecenie symfony plugin:publish-assets powinno pomóc.
Go to the top of the page
+Quote Post
tOm-i
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.05.2005

Ostrzeżenie: (0%)
-----


  1. symfony init-project test


w Database.yml ustawiłem parametry BD.
nastepnie:

  1. symfony propel:build-all
  2. symfony init-app frontend
  3. symfony propel:generate-module frontend article DemoArticle



dodaje:

CODE
// lib/form/DemoArticleForm.class.php
$this->widgetSchema['author_id']->setOption('renderer_class', 'sfWidgetFormPropelJQueryAutocompleter');
$this->widgetSchema['author_id']->setOption('renderer_options', array(
'model' => 'DemoAuthor',
'url' => $this->getOption('url'),
));

public function executeNew(sfWebRequest $request)
{
$this->form = new DemoArticleForm($article, array('url' => $this->getController()->genUrl('article/ajax')));
}

// apps/frontend/modules/article/actions/actions.class.php
public function executeAjax($request)
{
$this->getResponse()->setContentType('application/json');
$authors = DemoAuthorPeer::retrieveForSelect($request->getParameter('q'), $request->getParameter('limit'));
return $this->renderText(json_encode($authors));
}
class DemoAuthorPeer extends BaseDemoAuthorPeer
{
static public function retrieveForSelect($q, $limit)
{
$criteria = new Criteria();
$criteria->add(DemoAuthorPeer::NAME, '%'.$q.'%', Criteria::LIKE);
$criteria->addAscendingOrderByColumn(DemoAuthorPeer::NAME);
$criteria->setLimit($limit);
$authors = array();
foreach (DemoAuthorPeer::doSelect($criteria) as $author)
{
$authors[$author->getId()] = (string) $author;
}
return $authors;
}
}
// apps/frontend/modules/article/templates/_form.php
<?php use_javascript('/sfFormExtraPlugin/js/jquery.autocompleter.js') ?>
<?php use_stylesheet('/sfFormExtraPlugin/css/jquery.autocompleter.css') ?>

Dostaje błąd:

  1. Notice: Undefined variable: article in /home/sfprojects/test/apps/frontend/modules/article/actions/actions.class.php on line 20


wiec w lini:

  1. $this->form = new DemoArticleForm($article, array('url' => $this->getController()->genUrl('article/ajax')));


daje:

  1. $this->form = new DemoArticleForm(new DemoArticle(), array('url' => $this->getController()->genUrl('article/ajax')));


dostaje blad:
  1. Fatal error: Class 'sfWidgetFormPropelJQueryAutocompleter' not found in /usr/share/php/symfony/widget/sfWidgetFormChoice.class.php on line 126

Bo zapomniełem zainstalować pluginu
wiec:

  1. symfony plugin:install sfFormExtraPlugin


i
  1. symfony cache:clear


nastepnie blad:
  1. 500 | Internal Server Error | RuntimeException
  2. Class "DemoAuthor" must implement a "__toString" method to be rendered in a "sfWidgetFormPropelJQueryAutocompleter" widget

wiec dodaje metody __toString

CODE
class DemoAuthor extends BaseDemoAuthor
{
public function __toString()
{
return $this->getName();
}
}


class DemoCategory extends BaseDemoCategory
{
public function __toString()
{
return $this->getName();
}
}


class DemoTag extends BaseDemoTag
{
public function __toString()
{
return $this->getName();
}
}


w bazie w demo_author dodaje 2 wpisy:
xtest 1
xtest 2


na końcu dałem jeszcze:

  1. symfony plugin:publish-assets



i nadal nie działa


w article/new mam
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="shortcut icon" href="/favicon.ico" />
<script type="text/javascript" src="/sfFormExtraPlugin/js/jquery.autocompleter.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/sfFormExtraPlugin/css/jquery.autocompleter.css" />
</head>

<body>
<h1>New Article</h1>


<form action="/article/create" method="post" >
<table>
<tfoot>
<tr>
<td colspan="2">
<input type="hidden" name="demo_article[id]" id="demo_article_id" /> &nbsp;<a href="/article">Cancel</a>

<input type="submit" value="Save" />
</td>
</tr>
</tfoot>
<tbody>
<tr>
<th><label for="demo_article_author_id">Author id</label></th>
<td>

<input type="hidden" name="demo_article[author_id]" id="demo_article_author_id" /><input type="text" name="autocomplete_demo_article[author_id]" value="" id="autocomplete_demo_article_author_id" /><script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#autocomplete_demo_article_author_id")
.autocomplete('/article/ajax', jQuery.extend({}, {
dataType: 'json',
parse: function(data) {
var parsed = [];
for (key in data) {
parsed[parsed.length] = { data: [ data[key], key ], value: data[key], result: data[key] };
}
return parsed;
}
}, { }))
.result(function(event, data) { jQuery("#demo_article_author_id").val(data[1]); });
});
</script> </td>
</tr>
<tr>
<th><label for="demo_article_status">Status</label></th>
<td>

......CUT


article/ajax daje mi plik z danymi z bazy czyli:
  1. {"2":"xtest 1","1":"xtest 2"}


tak to wygląda...


Ten post edytował tOm-i 21.08.2009, 10:54:25
Go to the top of the page
+Quote Post
destroyerr
post
Post #6





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Nie działa - czyli pojawia się input, ale po wpisaniu nic się nie dzieje? Tak na prawdę znowu nie napisałeś co się dzieje i czym objawia się "nie działa".
Może błąd jest gdzieś po strone js, w takim razie skorzystaj z firebug'a i napisz jakie on daje błędy.
Go to the top of the page
+Quote Post
tOm-i
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.05.2005

Ostrzeżenie: (0%)
-----


Przepraszam ale miedzy czasie edytowałem posta bo problemy z BBCode miałem (IMG:style_emoticons/default/smile.gif) teraz podałem wiecej informacji,
pojawia się normalenie cały formularz tylko samo autocomplete w inpucie nie działa, zaraz sprawdzę przy pomocy tego co mi napisałeś.


EDIT

wreszcie co sie ruszyło (IMG:style_emoticons/default/smile.gif) są błędy co mnie niezmiernie cieszy bo nie maiłem pomysłyu juz jak znaleść jakieś błedy

CODE
jQuery is not defined
jquery.autocompleter.js()jquery.a...pleter.js (wiersz 762)
[Break on this error] })(jQuery);\njquery.a...pleter.js (wiersz 762)
jQuery is not defined
new()new (wiersz 30)
[Break on this error] jQuery(document).ready(function() {\nnew (wiersz 30)


takie błedy mam.

Ten post edytował tOm-i 21.08.2009, 11:02:29
Go to the top of the page
+Quote Post
destroyerr
post
Post #8





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Zapomniałeś już co było we wcześniejszych postach? Przecierz Whisller i Cysiaczek pisali Ci już o załączeniu jQuery. U Ciebie nadal go nie ma! O czym zresztą mówi bardzo dokładnie błąd, który nam podałeś.
Go to the top of the page
+Quote Post
tOm-i
post
Post #9





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.05.2005

Ostrzeżenie: (0%)
-----


To proszę mi powiedzieć co kryje się pod terminem "załączenie jquery" ?
nie to :?

  1. <?php use_stylesheet('/sfFormExtraPlugin/js/jquery.autocompleter.js') ?>


bo juz zgłupiałem.

Dodam, że poprwność dołączenia css sprawdziłe sobie poprzez dodanie w jquery.autocompleter.css wpisu
* {font-size:10px}
czciionka mi sie zmiejszyłe wiec css załadowany.

Rozumiem co "mówi" do mnie błąd tylko nie wiem dlaczego ?

http://test.local/sfFormExtraPlugin/js/jqu...utocompleter.js wyświetla mi skrypt js taką lokalizacjie podaje również firebug wiec moze nie mam "załączonego jquery" :]

Ten post edytował tOm-i 21.08.2009, 11:25:15
Go to the top of the page
+Quote Post
destroyerr
post
Post #10





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Nie, to jest plugin do jQuery, a Tobie brakuje samego jQuery. Mógłbyś przeczytać samemu coś o jQuery to też byś to wiedział.
Go to the top of the page
+Quote Post
tOm-i
post
Post #11





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.05.2005

Ostrzeżenie: (0%)
-----


No się nie domyśliłem ze może brakować w pluginie czegoś czego on sam wymaga.
Teraz już działa dziękuję wszystkim za pomoc.
Go to the top of the page
+Quote Post
Mariner
post
Post #12





Grupa: Zarejestrowani
Postów: 47
Pomógł: 6
Dołączył: 26.12.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W manualu do pluginu sfFormExtraPlugin w części poświęconej autocomplete:

http://symfony.com/blog/new-in-symfony-1-2-make-your-choice

wkradł się błąd który - jeżeli próbuje się uruchomić ten przykład sposobem kopiuj wklej - powoduje że całość nie działa (a przynajmniej jeżeli korzysta się z sf 1.4 )

we fragmencie :

  1. public function executeEdit($request)
  2. {
  3. // ...
  4.  
  5. $this->form = new DemoArticleForm($article, array('url' => $this->getController()->genUrl('article/ajax')));
  6.  
  7. // ...
  8. }


zamiast "$article" powinno być "$DemoArticle". Czyli :

  1. public function executeEdit($request)
  2. {
  3. // ...
  4.  
  5. $this->form = new DemoArticleForm($DemoArticle, array('url' => $this->getController()->genUrl('article/ajax')));
  6.  
  7. // ...
  8. }
Go to the top of the page
+Quote Post
destroyerr
post
Post #13





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Błędu nie ma, masz u siebie inaczej nazwaną zmienną. Gdybyś artykuł przypisał do zmiennej $article problemu by nie było. To wszystko.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.09.2025 - 21:15