Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Ładowanie klas z folderu.
skowron-line
post
Post #1





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Witam bawię się ZF i napotkałem taki problem, czytam http://akrabat.com/zend-framework-tutorial/ i tam formularze są pobierane z folderu forms.
Ale gdy chcę utworzyć obiekt klasy forms_Login to dostaje błąd że plik lub klasa w pliku nie istnieje.
Kod
[b]Fatal error[/b]: Uncaught exception 'Zend_Exception' with message 'File "Login.php" does not exist or class "forms_Login" was not found in the file' in /var/www/zend/library/Zend/Loader

plik Login.php
  1. class forms_Login extends Zend_Form {
  2.  
  3. public function __construct($options=null)
  4. {
  5. parent::__construct($options);
  6. }
  7. }


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




class Form_Login i po problemie.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


No niestety nie
Kod
[b]Fatal error[/b]:  Class 'Form_Login' not found in [b]/var/www/zend/application/controllers/UsersController.php[/b] on line [b]32[/b]

cały czas dostaje błąd.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Spróbuj:
class Form_LoginForm extends Zend_Form {
...

Chyba, że masz aplikację podzieloną na moduły, to wtedy:

class NazwaModułu_Form_LoginForm extends Zend_Form {

Ten post edytował darko 3.03.2010, 15:19:11


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




No to spróbuj class Application_Form_Login


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


a jak nazwałeś plik, w którym masz klasę formularza (folder forms)?
Dla
class Form_LoginForm extends Zend_Form {
plik powinien mieć nazwę: LoginForm.php


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


@darko
@batman
nic nie pomogło.
Struktura katalogów, może w niej tkwi problem.
Kod
-application
--controllers
--modules
--forms
--views
-library
-html


plik sie nazywa Login.php
klasa pierwotnie się nazywała forms_Login

Ten post edytował skowron-line 3.03.2010, 15:23:23


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
darko
post
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Nazwij plik LoginForm.php a klasę
class Form_LoginForm extends Zend_Form {


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
batman
post
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W pliku application.ini dodaj:
appnamespace = "Application"
Klasę nazwij Application_Form_Login.
Wywołanie:
  1. $form = new Application_Form_Login();

Nie może nie działać.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
skowron-line
post
Post #10





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


Cytat(batman @ 3.03.2010, 15:25:52 ) *
Nie może nie działać.


Kod
-application
--configs
->application.ini

application.ini
Kod
[production]
appnamespace = "Application"

nazwę klasy zmieniłem.
I nic.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
mortus
post
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Brakuje metody w Bootstraperze (application/Bootstrap.php). Metoda powinna wyglądać mniej więcej tak:
  1. <?php
  2. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
  3. protected function _initAutoload() {
  4. $moduleLoader = new Zend_Application_Module_Autoloader(array(
  5. 'namespace' => '',
  6. 'basePath' => APPLICATION_PATH
  7. ));
  8. return $moduleLoader;
  9. }
Metoda może się nazywać jakkolwiek, ale musi zawierać _init w nazwie na początku, a jej drugi człon powinien zaczynać się od dużej litery.
EDIT:
Żadne zmiany w pliku application.ini nie są potrzebne. Plik z formularzem może się nazywać np. Login.php, a deklaracja klasy powinna wtedy wyglądać następująco
  1. class Form_Login extends Zend_Form {
  2. }


Ten post edytował mortus 3.03.2010, 15:49:37
Go to the top of the page
+Quote Post
batman
post
Post #12





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




~mortus
Nigdy nie skorzystałem z Twojego sposobu i nie miałem problemów z ładowaniem klas. Ten jeden wiersz załatwia sprawę. Oczywiście nazwa nie musi być Application. Można zastosować dowolną inną nazwę. Nawet pustą.

~skowron-line
Spakuj projekt i wystaw gdzieś online. Jak dojadę do domu, to sprawdzę na żywym organizmie.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
mortus
post
Post #13





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Przepraszam za niedopatrzenie. Jeżeli używasz Zend Framework w wersji 1.10.0 lub nowszej to sprawę powinno załatwić to, o czym mówił batman. Metoda, którą podałem może być pomocna w starszych wersjach framewrok-a, choć na pewno nie jest jedyną skuteczną metodą. Wrzuć gdzieś źródło, to popatrzymy.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 01:52