Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Zend_Form - nie znajduje klasy
Forum PHP.pl > Forum > PHP > Frameworki
x2008x
Witam, mam problem z formularzami w ZF2. Jako, że dopiero zaczynam, nie wiem gdzie znajduje się błąd.
Strukturę katalogów mam domyślną.

Oto model:
  1. <?php
  2. namespace Example;
  3.  
  4. use Zend\Mvc\ModuleRouteListener;
  5.  
  6.  
  7. class Module
  8. {
  9. public function getConfig()
  10. {
  11. return include __DIR__ . '/config/module.config.php';
  12. }
  13.  
  14. public function getAutoloaderConfig()
  15. {
  16. return array(
  17. 'Zend\Loader\StandardAutoloader' => array(
  18. 'namespaces' => array(
  19. __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
  20. ),
  21. ),
  22. );
  23. }
  24.  
  25.  
  26. }




Tutaj controller:
  1. <?php
  2. namespace Example\Controller;
  3.  
  4. use Zend\Mvc\Controller\AbstractActionController;
  5. use Zend\View\Model\ViewModel;
  6. use Zend\Form\Form;
  7. use Zend\Form\Fieldset;
  8. class IndexController extends AbstractActionController
  9. {
  10. public function indexAction()
  11. {
  12.  
  13.  
  14.  
  15. require_once 'form_add.php';
  16.  
  17. $form = new forms_Formularz();
  18. $this->view->form = $form;
  19.  
  20. return new ViewModel();
  21. }
  22. }



A tutaj sam formularz:
  1. <?php
  2. namespace Example\Form;
  3.  
  4. use Zend\Form\Form;
  5.  
  6. class forms_Formularz extends Zend_Form
  7. {
  8. public function init()
  9. {
  10. $firstname = new Zend_Form_Element_Text('firstname');
  11. $lastname = new Zend_Form_Element_Text('lastname');
  12. $position = new Zend_Form_Element_Select('position');
  13. $description = new Zend_Form_Element_Textarea('description');
  14. $submit = new Zend_Form_Element_Submit('btn-submit');
  15.  
  16. $this->addElement($firstname);
  17. $this->addElement($lastname);
  18. $this->addElement($position);
  19. $this->addElement($description);
  20. $this->addElement($submit);
  21. }
  22. }
  23.  
  24.  
  25. ?>


Błąd brzmi:
  1. Fatal error: Class 'Zend_Form' not found in E:\www\zf\module\Example\src\Example\Controller\form_add.php on line 3


Proszę o pomoc, z góry dzięki.
Widok myślę, że jest zbędny.
RiE
Radziłbym zapoznać się z dokumentacją w szczególności z przykładową aplikacją, bo strasznie dziwny twór Ci wyszedł.
W Zendzie nie wczytuje się w ten sposób plików:
  1. require_once 'form_add.php';

Tylko korzystając z przestrzeni nazw i use

Błąd wskazuje że nie ma takiej klasy, ponieważ w Zend 2 nazwa klasy jest identyczna jak nazwa pliku.

Jeżeli używamy:
  1. use Zend\Form\Form;
  2. use Zend\Form\Fieldset;


To rozszerzamy klasę w ten sposób:
  1. class forms_Formularz extends Form
  2. class forms_Formularz extends Fieldset


Dlatego zalecane jest, aby Twoje klasy również przyjeły taką konwencję nazewnictwa, więc zamiast
  1. class forms_Formularz

Dobrze byłoby dać:
  1. class Formularz
  2. class MojFormularz


Przy nazwach klas używamy systemu notacji zwanym PascalCase
Natomiast przy zmiennych i nazwach metod, używane są notacje CamelCase

Przykład:
  1. class IndexController
  2. class ViewModel
  3. class JsonModel
  4.  
  5. indexAction()
  6. getServiceLocator()
  7. getParam()


Dlatego jak łatwo się domyślić, po zmienieniu extends Zend_Form na Form, kolejnym błędem będzie brak klas Zend_Form_Element_Text
Kolejna sprawa to:
E:\www\zf\module\Example\src\Example\Controller\form_add.php on line 3

W folderze Controller, trzymamy tylko kontrolery, których koniec powinien być rozszerzony o słowo Controller
IndexController.php
CategoryController.php
ExampleController.php
itd.



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.