Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Własny kontroler
Ikky
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


Witam od jakiegoś czasu usiłuje zrobić swój własny kontroler który dziedziczył by po zend_controller_action.

Więc tak chce powiedzmy zrobić tak żeby w każdym kontrolerze miał napis test

1) stworzyłem w library/App/Controller/Test.php

  1. <?php
  2. class App_Controller_Test extends Zend_Controller_Action
  3. {
  4.  
  5. public function init()
  6. {
  7. echo "test";
  8. }
  9. }


no i teraz sobie w IndexControllerze zamieniam

Zend_Controller_Action na:

  1. <?php
  2. class IndexController extends App_Controller_Test
  3. {


Wyskakuje mi taki błąd

Fatal error: Class 'App_Controller_Test' not found in /home/users/test/www/application/controllers/IndexController.php on line 2

Co robie źle?
Go to the top of the page
+Quote Post
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Masz całkiem jasno podane, że PHP nie może znaleźć klasy. Jak masz skonfigurowany autoloader?
Go to the top of the page
+Quote Post
Ikky
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 1
Dołączył: 5.07.2009

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


No mam wszystko z najnowszego qucikstarta.

autoloader:

  1. protected function _initAutoload()
  2. {
  3.  
  4. $autoloader = new Zend_Application_Module_Autoloader(array(
  5. 'namespace' => 'Default',
  6. 'basePath' => dirname(__FILE__)
  7. )
  8. );
  9.  
  10.  
  11.  
  12. return $autoloader;
  13. }



index.php na wszelki wypadek

  1. <?php
  2. set_include_path(implode(PATH_SEPARATOR, array(
  3. realpath(dirname(__FILE__) . '/../library'),
  4. )));
  5.  
  6. defined('APPLICATION_PATH')
  7. || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
  8.  
  9. defined('APPLICATION_ENV')
  10. || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
  11.  
  12. /** Zend_Application */
  13. require_once 'Zend/Application.php';
  14.  
  15. $application = new Zend_Application(
  16. APPLICATION_ENV,
  17. APPLICATION_PATH . '/configs/application.ini'
  18. );
  19. $application->bootstrap();
  20. $application->run();
Go to the top of the page
+Quote Post
Elbacer
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 25.12.2008

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


w pliku INI:
  1. autoloadernamespaces.0 = "My_"

i kontroler w: "\library\My\Controller\Action.php"

  1. <?
  2.  
  3. abstract class My_Controller_Action extends Zend_Controller_Action {
  4.  
  5. public function init() {
  6. }
  7.  
  8. }
  9.  
  10. ?>
Go to the top of the page
+Quote Post
Homiczek
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.04.2003

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


Witam

odgrzewam temat bo mam podobny problem.

Na początku powiem że dopiero zaczynam się uczyć Zend'a.

I postanowiłem podpiąć Smarty.

Korzystając z tutoriala jakoś mi się udało (IMG:style_emoticons/default/smile.gif)



Ale chciałbym zrobić, to w ten sposób abym nie musiał w każdym pojedynczym kontrolerze wrzucać kilkunastu linijek inicjalizacyjnych smarty.

A chcę katalog library zenda zostawić w spokoju - tzn nie umieszczać tam własnych klas, aby w razie późniejszych aktualizacji nie zapomnieć tam znowu dodać.

Zrobiłem sobie klasę SmartyController która dziedziczy po Zend_controller_action, i następnie Indexcontroller i resztę dziedziczę po SmartyController....


I jakoś działa, ale chciałbym abym nie musiał w każdym kontrolerze wrzucać require'ów :

CODE
<?php
require('Smarty.php');
require('SmartyController.php');
//class IndexController extends Zend_Controller_Action {
class IndexController extends SmartyController {
function indexAction() {
$this->view->title = "Panel";
}

public function init() {
parent::init();

}
}


Smarty.php to klasy, interfejsy do widoku itp
SmartyControler.php to klasa inicjująca Smarty z konfiguracją katalogów itp

Próbowałem to require'ować w głównym index.php, ale w zależności w którym miejscu to wrzucę, to wyrzuca różne błędy brakujących klas.

Pewnie jest to związane z kolejnością wrzucania klas przez silnik Zenda, a tego niestety nie znam.

Proszę o jakąś podpowiedź jak to obejść.

Pozdrawiam i dziękuję (IMG:style_emoticons/default/smile.gif)
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: 24.12.2025 - 15:26