![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Zmieniam układ katalogów w mojej aplikacji opartej o Framework Zend. Stary układ katalogów:
-application --configs --controllers --forms --layouts --models --plugins --views --Bootstrap.php -library -public --index.php Nowy układ katalogów: -application --configs --layouts --modules ---admin ----controllers ----forms ----models ----views ---default ----controllers ----forms ----models ----views ---library ----controllers ----forms ----models ----views --views --Bootstrap.php -library -public --index.php Dostaje taki komunikat błędu: CODE Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller class ("ErrorController")' in C:\XAMPP\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php:347 Stack trace: #0 C:\XAMPP\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php(256): Zend_Controller_Dispatcher_Standard->loadClass('ErrorController') #1 C:\XAMPP\xampp\php\PEAR\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #2 C:\XAMPP\xampp\php\PEAR\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch() #3 C:\XAMPP\xampp\php\PEAR\Zend\Application.php(358): Zend_Application_Bootstrap_Bootstrap->run() #4 C:\XAMPP\xampp\htdocs\testy\public\index.php(27): Zend_Application->run() #5 {main} thrown in C:\XAMPP\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php on line 347 Mój Bootstrap.php: CODE <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { private $_acl; protected function _initAutoLoad() { $modelLoader = new Zend_Application_Module_AutoLoader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH, 'resourceTypes' => array ( 'validator' => array( 'path' => 'views/validators', 'namespace' => 'Validator' ) ) )) ; /* if(Zend_Auth::getInstance()->hasIdentity()) { Zend_Registry::set('role',Zend_Auth::getInstance()->getStorage()->read()->role ); } else { Zend_Registry::set('role', 'guest'); } $this->_acl = new Model_LibraryAcl; $this->_auth = Zend_Auth::getInstance(); $fc = Zend_Controller_Front::getInstance(); $fc->registerPlugin(new Plugin_AccessCheck($this->_acl)); */ return $modelLoader; } function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getview(); $view->setHelperPath(APPLICATION_PATH. '/helpers', ''); Zend_Dojo::enableView($view); $view->doctype('HTML4_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type','text/html; charset=UTF-8') ->appendHttpEquiv('Content-Language','pl-PL') ->appendName('description', 'Using view helpers in Zend_view'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Sala'); $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $navContainer = new Zend_Navigation($navContainerConfig); $view->navigation($navContainer);/*->setAcl($this->_acl)->setRole(Zend_Registry::get('role'));*/ } } index.php CODE <?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(dirname(__FILE__) . '/../library'), realpath(dirname(__FILE__) . '/../application'), get_include_path(), ))); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run(); application.ini CODE [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.modules = "" autoloadernamespaces.0 = "Zend_" autoloadernamespaces.1 = "forms_" resources.layout.layoutpath = APPLICATION_PATH "/layouts" resources.db.adapter = mysqli resources.db.isDefaultAdapter = true resources.db.params.host = localhost resources.db.params.username = root resources.db.params.password = 54ajmon5 resources.db.params.dbname = zftutorial resources.db.params.charset = 'utf8' [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 Proszę o pomoc ![]() Pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Pododawaj ścieżki do kontrolerów setControllerDirectory
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Hej, jednak nie do końca udało się rozwiązać mój problem nadal proszę o pomoc.
Zmieniam układ aplikacji na wzór tutorialu -> http://www.youtube.com/watch?v=heDPuEaCn7w Obecnie męczę się z błędem Kod Fatal error: Class 'Default_Model_LibraryAcl' not found in C:\XAMPP\xampp\htdocs\testy\application\Bootstrap.php on line 28 Dodałem do pliku application.ini regułke: Kod resources.frontController.params.prefixDefaultModule = "1" Pododawałem do wszystkich kontrolerów oraz model prefix Default_ Jednak gdy zacząłem dodawać Role oraz przywileje w pliku LibraryAcl.php oraz do klasy dodałem prefix Default dostaje owy komunikat o błędzie. Podam moją strukture katalogów wraz ze wszystkimi plikami następnie kod plika Bootstrap.php oraz LibraryACL.php. Struktura katalogów: CODE -application --configs ---application.ini ---navigation.xml --layouts ---layout.phtml --modules ---admin ----controllers ----forms ----models ----views -----filters -----helpers -----scripts ---default ----controllers -----AddeventController.php -----AddsalaController.php -----AuthenticationController.php -----ContactController.php -----ErrorController.php -----IndexController.php -----RegistrationController.php -----SalaController.php -----SaleController.php -----UsersController.php ----forms -----Account.php -----Addevent.php -----Addsala.php -----ContactForm.php -----LoginForm.php -----RegistrationForm.php -----Search.php -----Users.php ----models ------DbTable -------Categories.php -------Facilities.php -------Photos.php -------Province.php -------Sale.php -----LibraryAcl.php -----Listcity.php -----Listsale.php -----Multi.php ----Plugins -----AccessCheck.php ----views -----filters -----helpers -----scripts ------pagination.phtml ---library ----controllers ----forms ----models ----views -----filters -----helpers -----scripts --Bootstrap.php -library -public Plik Bootstrap.php CODE <?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { private $_acl; protected function _initAutoLoad() { $modelLoader = new Zend_Application_Module_AutoLoader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH,'/modules/default', 'resourceTypes' => array ( 'validator' => array( 'path' => 'views/validators', 'namespace' => 'Validator' ) ) )) ; if(Zend_Auth::getInstance()->hasIdentity()) { Zend_Registry::set('role',Zend_Auth::getInstance()->getStorage()->read()->role ); } else { Zend_Registry::set('role', 'guests'); } $this->_acl = new Default_Model_LibraryAcl; $this->_auth = Zend_Auth::getInstance(); $fc = Zend_Controller_Front::getInstance(); $fc->registerPlugin(new Plugin_AccessCheck($this->_acl)); return $modelLoader; } function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getview(); $view->setHelperPath(APPLICATION_PATH. '/helpers', ''); Zend_Dojo::enableView($view); $view->doctype('HTML4_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type','text/html; charset=UTF-8') ->appendHttpEquiv('Content-Language','pl-PL') ->appendName('description', 'Using view helpers in Zend_view'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Sala'); $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $navContainer = new Zend_Navigation($navContainerConfig); $view->navigation($navContainer)->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); } } Plik LibraryACL.php CODE <?php class Default_Model_LibraryAcl extends Zend_Acl { public function __construct() { $this->addRole(new Zend_ACL_Role('guests')); $this->addRole(new Zend_ACL_Role('users'), 'guests'); $this->addRole(new Zend_ACL_Role('admins'), 'users'); $this->add(new Zend_ACL_Resource('library')) ->add(new Zend_ACL_Resource('library:sale'), 'library') ->add(new Zend_ACL_Resource('library:sala'), 'library'); $this->add(new Zend_ACL_Resource('admin')) ->add(new Zend_ACL_Resource('admin:users'), 'admin') ->add(new Zend_ACL_Resource('admin:addsala'), 'admin'); $this->add(new Zend_ACL_Resource('default')) ->add(new Zend_ACL_Resource('default:authentication'), 'default') ->add(new Zend_ACL_Resource('default:index'), 'default') ->add(new Zend_ACL_Resource('default:error'), 'default') ->add(new Zend_ACL_Resource('default:addevent'), 'default') ->add(new Zend_ACL_Resource('default:registration'), 'default') ->add(new Zend_ACL_Resource('default:contact'), 'default'); $this->allow('guests', 'default:authentication', 'login' ); $this->allow('guests', 'default:error', 'error' ); $this->deny('users', 'default:error', 'login' ); $this->allow('users', 'default:index', 'index' ); $this->allow('users', 'default:authentication', 'logout' ); $this->allow('users', 'default:sale', array('index', 'list') ); $this->allow('admins', 'admin:sale', array('index', 'list') ); } } Plik application.ini CODE [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.params.prefixDefaultModule = "1" resources.modules = "" autoloadernamespaces.0 = "Zend_" autoloadernamespaces.1 = "forms_" resources.layout.layoutpath = APPLICATION_PATH "/layouts" resources.db.adapter = mysqli resources.db.isDefaultAdapter = true resources.db.params.host = localhost resources.db.params.username = root resources.db.params.password = 54ajmon5 resources.db.params.dbname = zftutorial resources.db.params.charset = 'utf8' [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 Wszystkie pliki kontrolerów, moduls, oraz action Plugin, navigation są w module default. Ten post edytował cykcykacz 7.06.2010, 12:50:26 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
autoloadernamespaces.2 = "Default_" w konfiguracji
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
CODE Warning: include(Default\Model\LibraryAcl.php) [function.include]: failed to open stream: No such file or directory in C:\XAMPP\xampp\php\PEAR\Zend\Loader.php on line 83 Warning: include() [function.include]: Failed opening 'Default\Model\LibraryAcl.php' for inclusion (include_path='C:\XAMPP\xampp\htdocs\testy\application/../library;C:\XAMPP\xampp\htdocs\testy\library;C:\XAMPP\xampp\htdocs\testy\application;.;C:\XAMPP\xampp\php\PEAR') in C:\XAMPP\xampp\php\PEAR\Zend\Loader.php on line 83 Fatal error: Class 'Default_Model_LibraryAcl' not found in C:\XAMPP\xampp\htdocs\testy\application\Bootstrap.php on line 28 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Czy masz dobrze podane ścieżki możesz sprawdzić ładując ten plik ręcznie require_once('Default/Model/LibraryAcl.php'); Możesz popróbować też z setFallbackAutoloader
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Taka jest ścieżka poprawna require_once('modules/default/models/LibraryAcl.php');
Wtedy wszystko prawie działa ok brakuje mi jeszcze menu, navigation.xml które jest w katalogu config. Jeżeli wiesz jak pozbyć się tego Kod require_once('modules/default/models/LibraryAcl.php'); Oraz zrobić menu navigation.xml proszę o lekarstwo. ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Dodaj katalog modules do include_path, navigation.xml otwierasz przez Zend_Config_Xml i ustawiasz do navigacji
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Chodzi ci o to? W pliku application.ini
Kod [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" includePaths.modules = APPLICATION_PATH "/../application/modules" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.params.prefixDefaultModule = "1" resources.modules = "" autoloadernamespaces.2 = "Default_" autoloadernamespaces.0 = "Zend_" autoloadernamespaces.1 = "forms_" resources.layout.layoutpath = APPLICATION_PATH "/layouts" Czy też może w public/index.php Kod // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(dirname(__FILE__) . '/../library'), realpath(dirname(__FILE__) . '/../application'), realpath(dirname(__FILE__) . '/../application/modules'), get_include_path(), ))); Chyba zrobiłem to nie poprawnie nadal nie może znaleźć klasy ![]() Natomiast co jest grane z navigation.xml też nie mam pojęcia Kod $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); $navContainer = new Zend_Navigation($navContainerConfig); $view->navigation($navContainer);//->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); Jeżeli ta linijka jest w postaci komentarza czyli jej nie ma wszystko jest ok. Natomiast po odkomentowaniu niewidać nawigacji ![]() Kod //->setAcl($this->_acl)->setRole(Zend_Registry::get('role'));
Ten post edytował cykcykacz 8.06.2010, 13:17:47 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
Masz role ustawione w navigacji? Linuź rozróżnia małe i wielkie litery, zmień pierwsze litery katalogów na wielkie litery albo zmień wielkie postosuj nazwę klasy do katalogu w którym się znajduje "default_model_acl"
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 550 Pomógł: 9 Dołączył: 29.05.2009 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Co tak dokładnie ten kod oznacza?
Kod resources.frontController.params.prefixDefaultModule = "1" W navigation mam ustawione role przypuszczam, że chodzi o to Kod <logout> <label>Konferencyjne</label> <module>default</module> <controller>sale</controller> <action>listkonferencyjne</action> <resource>default:authentication</resource> <params> <categories>konferencyjne</categories> </params> </logout> Dziwne, muszę pokombinować, jeżeli masz jeszcze jakieś pomysły będę wdzięczny 3 dzień z tym dość prostym problemem walczę i nie mogę się uporać. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 05:28 |