Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Wielkośc liter w nazwie modułu
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Witam,

Czy jest jakiś sposób na to aby bez większego kombinowania aby w momencie gdy wywołam moduł admin (pisany z małej litery w URL), poprawnie wyszukiwało kontroller Admin_IndexController
W tej chwili aby to działało nazwę katalogu muszę pisać z dużej litery (Admin), oraz w linku URL nmazwę modułu także musze podać z dużej litery.

Czy można w jakiś sposób wyłączyć rozróznianie wielkości liter nazwy modułów?

Ten post edytował Sajrox 14.11.2009, 18:25:33
Go to the top of the page
+Quote Post
luki100011
post
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 20
Dołączył: 20.04.2004
Skąd: Wielkopolska

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


A jak masz zapisane nazwy plików questionmark.gif
U mnie działa z małymi normalnie


--------------------
Go to the top of the page
+Quote Post
Sajrox
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Nazwy plików standardowo:

../modules/default/contollers/IndexController.php (klasa: class IndexController extends Default_InitModule)
../modules/admin/contollers/IndexController.php (klasa: class Admin_IndexController extends Admin_InitModule)


Aha dodam że moje kontrolery dziedziczą po kontrolerze globalnym
../modules/default/InitModule.php
../modules/admin/InitModule.php


Z tego co teraz widze nie może wlaśnie odnaleść tych kontrolerów globalnych :/
  1. Fatal error: Class 'Admin_InitModule' not found


W Include path mam
  1. '.'
  2. . PATH_SEPARATOR . BASE_PATH.'/library'
  3. . PATH_SEPARATOR . APP_PATH.'/modules' // tutaj powinno szukać moich kontrolerówe globalnych a jednak nie znajduje :(
  4. . PATH_SEPARATOR . APP_PATH
  5. . PATH_SEPARATOR . BASE_PATH.'/public'
  6. . PATH_SEPARATOR . get_include_path()
  7. );


Niestety błąd
  1. Warning: include(Admin/InitModule.php) [function.include]: failed to open stream: No such file or directory


szuka w katalogu Admin a powinien w admin
Jednak jak zmienie nazwę kontrolera glob. na admin_InitModule otrzymuje
  1. Class 'admin_InitModule' not found in ...


Nic juz nie rozumiem :/

Ten post edytował Sajrox 14.11.2009, 18:35:29
Go to the top of the page
+Quote Post
pgrzelka
post
Post #4





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

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


napisz jak inicjujesz autoloader w bootstrapie
bo tam masz błąd


--------------------
Go to the top of the page
+Quote Post
seth-kk
post
Post #5





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


dodales 'Admin' do namespace?


--------------------
Go to the top of the page
+Quote Post
Sajrox
post
Post #6





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Problem z wielkością znaków ciąg dalszy :/

Poprzedni problem rozwiązałem przez dodanie w odpowiednie miejsce kodu
  1.  
  2. $InitController = MODULES_PATH.'/'.$this->_module.'/InitModule.php';
  3. if (file_exists($InitController))
  4. require_once($InitController);


Teraz mam kolejny problem dokłądnie z tej samej beczki ale związany z formularzami. Otóż formularze trzymam w katalogach z modułami
./MODULES/admin/Form/(Login.php, Register.php itd..)
./MODULES/default/Form/...

Nazwy klas Formularzy wyglądają tak:
  1. class Admin_Form_Login extends Zend_Form
  2. {
  3. ...
  4.  
  5. class Admin_Form_Register extends Zend_Form
  6. {
  7. ...


I problem jest w tym że na serwerze tych formularzy szuka pod ścieżką:
(Admin/Form/Login.php)
(Admin/Form/Register.php)
itd..

Generalnie chodzi o wielkośc liter nazw modułów szuka w katalogu "Admin" jednak z tego względu że katalogi mam pisane z małej litery "admin"
to analogicznie nie może znaleść klase gdyż Admin i admin to 2 rozne katalogi.
Jak mogę to rozwizać według Was ?

Ustawienie Namespace nic nie daje:
  1. ;autoloader
  2. autoloaderNamespaces.app = "App_"
  3. autoloaderNamespaces.model = "Model_"
  4. autoloaderNamespaces.admin = "Admin_"
  5. autoloaderNamespaces.default = "Default_"



Na windowsie jest ok z wiadomych względów, co zerobić aby na serwerze / Linuxie też działało porpawnie?

Go to the top of the page
+Quote Post
seth-kk
post
Post #7





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Cytat(Sajrox @ 21.11.2009, 18:57:14 ) *
I problem jest w tym że na serwerze tych formularzy szuka pod ścieżką:
(Admin/Form/Login.php)
(Admin/Form/Register.php)
itd..

wiec uzywaj takich a jesli przeszkadzaja ci wielkie znaki w URLu to uzyj helpera z
  1. public function routeShutdown(Zend_Controller_Request_Abstract $request)
  2. {
  3. $request->setModuleName(ucfirst($request->getModuleName()));
  4. }


--------------------
Go to the top of the page
+Quote Post
Sajrox
post
Post #8





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


OK jako tako rozwiązałem problem
  1. // $this->_module <- nazwa modułu
  2. $dirModule = MODULES_PATH.'/'.$this->_module;
  3.  
  4. $loader = new Zend_Application_Module_Autoloader(array(
  5. 'namespace' => ucfirst($this->_module),
  6. 'basePath'&#12288;=> $dirModule,
  7. ));
  8.  
  9. $loader->addResourceTypes(array(
  10. 'forms'&#12288;=> array(
  11. 'path'&#12288;  => 'Form',
  12. 'namespace' => 'Form'&#12288;
  13. ),
  14. ));


Teraz mogę także zastosować to do Modeli itp.

Jakieś sugestie do tego rozwiązania questionmark.gif smile.gif
Jedynym minusem tego rozwiazania jest to że nie będę mógł uzyć Formularz pochodzący z innego modułu niż obecnie aktywny.

..

Kolejny problem z wielkością znaków :/

Tym razem z ActionHelper. CHodzi o to że teraz aby działało musze nazwać klasę helpera:
  1. // Ustawienie Zend_Controller_Action_HelperBroke
  2. // Zend_Controller_Action_HelperBroker::addPrefix($this->_module.'_App_ActionHelpers');
  3.  
  4. admin_App_ActionHelpers_SendVerifyEmail extends Zend_Controller_Action_Helper_Abstract


A chciałbym:
  1. // Ustawienie Zend_Controller_Action_HelperBroke
  2. // Zend_Controller_Action_HelperBroker::addPrefix(ucfirst($this->_module).'_App_ActionHelpers');
  3.  
  4. Admin_App_ActionHelpers_SendVerifyEmail extends Zend_Controller_Action_Helper_Abstract


Czy nie ma prostego sposobu na te problemu z wielkością znaków questionmark.gif sad.gif
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: 19.08.2025 - 02:14