Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Helpery - konfiguracja i praktyczne zastosowanie. Co i jak?, Pomoc w rozpoczęciu korzystania z helperów.
Sajrox
post
Post #1





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

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


Witam ponownie winksmiley.jpg

Kolejna nie przespana noc i kolejny problem sad.gif Helpery. Z dokumentacji za dużo nie wynika, Brak praktycznych przykladów z których można by było skorzystać.

Chciałbym prosić o opis jak można zaczać korzystać z helpera.

Powiedzmy że klasy Helperów umieszczam w katalogu:
/application/assistant/helpers/

Do załadowania helperów użyłem:
  1. Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH.'/assistant/helpers', 'MyHelper');


Kod helpera:
  1. require_once 'Zend/Controller/Action/Helper/Abstract.php';
  2.  
  3. class MyHelper extends Zend_Controller_Action_Helper_Abstract
  4. {
  5. public function my_test()
  6. {
  7. echo 'TEST TEST TEST TEST TEST';
  8. exit();
  9. }
  10. }



teraz w IndexController.php chciałbym użyć tego helpera (metody my_test()) i niewiem jak, w ogóle niewiem czy dobrze skonfigurowałem Zenda do tego by używac helperów.

MOże macie koledzy jakieś strony z artukułami lub może ktoś sam będzie w stanie poprowadzić za raczkę ?


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





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

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


po pierwsze warto symulowac namespace w nazwie klasy - dzieki temu mozesz zrobic cos takiego
  1. Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');

i dodac caly namespace a nie tylko pojedyncze helpery - szczegoly tutaj
poza tym warto zadbac o to zeby helper mial zaimplementowana metode direct() - dzieki temu bedziesz mogl sie do niego odwolac tak
  1. $this->_helper->myHelper();

o czym wiecej tutaj


--------------------
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%)
-----


Niestety kod:
  1. Zend_Controller_Action_HelperBroker::addPath('helpers', 'Helpers');

Nie chce działać :/ Nie odnajduje mi helpera mojego. Działa dopiero z:
  1. $layout = Zend_Layout::startMvc();
  2. $view_obj = $layout->getView();
  3.  
  4. $view_obj->addHelperPath('helpers', 'Helpers');


Czy po prostu podaje złą ścieżke questionmark.gif

Helper mam w
/application/assistant/helpers/My.php

# Include path
  1. '.'
  2. . PATH_SEPARATOR . BASE_PATH.'/library'
  3. . PATH_SEPARATOR . APPLICATION_PATH.'/assistant'
  4. . PATH_SEPARATOR . APPLICATION_PATH.'/assistant/helpers'
  5. . PATH_SEPARATOR . APPLICATION_PATH.'/models'
  6. . PATH_SEPARATOR . APPLICATION_PATH.'/models/DbClasses'
  7. . PATH_SEPARATOR . APPLICATION_PATH.'/models/DbClasses/generated'
  8. );


Jak daje
  1. $helper = new Helpers_My();

To nie widzi tego pliku chociaż że w set_include_path dodałem ściezkę do helperów. Klasa Helpera

  1. class Helpers_My extends Zend_Controller_Action_Helper_Abstract
  2. {
  3. public function test()
  4. {
  5. echo die('TEST HELPER');
  6. }
  7. }



Czy podaję złą ścieżke ? Przepraszam że tak się dopytuje, ale każdy kiedyś zaczynał
 

Ten post edytował Sajrox 24.08.2009, 13:31:17
Go to the top of the page
+Quote Post
seth-kk
post
Post #4





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

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


nie bardzo chce mi sie rozgryzac twoje podejscie (tez niedawno zaczynalem z zendem;) )
ale czy nie porsciej w include_path trzymac tylko sciezke do liba, w libie obok folderu Zend stworzyc wlasny w ktorym bedziesz trzymal wlasne klasy np
lib/
/Zend
/Seth
/Helpers
/MyHelper.php
/Validators
/etc...
a nastepnie gdzies w kodzie (np w bootstrapie)
  1. Zend_Controller_Action_HelperBrocker::addPrefix('Seth_Helpers');

MyHelper.php
  1. class Seth_Helper_MyHelper extends Zend_Controller_Action_Helper_Abstract
  2. {
  3. public function direct($val)
  4. {
  5. return 'Dancing ' . $val;
  6. }
  7. }

i w controllerach
  1. ...
  2. public function indexAction()
  3. {
  4. ...
  5. $whosDancing = $this->_helper->myHelper('me');
  6. ...
  7. }
  8. ...


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





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

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


Faktycznie działa smile.gif

Opisze dla potomnych. Może komuś się przyda.

Lokalizacja helperów:
| /library
| /MyApp
| /Helpers
| MyHelper.php


MyHelper.php
  1. class MyApp_Helpers_MyHelper extends Zend_Controller_Action_Helper_Abstract
  2. {
  3. public function direct()
  4. {
  5. return $this;
  6. }
  7.  
  8. public function mojaFukcja($val='')
  9. {
  10. die('TEST HELPER -> Ma na imię: '.$val);
  11. }
  12. }


W Initializer.php (coś jak Bootstrap.php, po kolei ładuje różne części aplikacji), można to wstawić w Bootstrapie.php
  1. ...
  2. /**
  3.   * Inicjacja helperów
  4.   * @return void
  5.   */
  6. public function initHelpers()
  7. {
  8. Zend_Controller_Action_HelperBroker::addPrefix('MyApp_Helpers');
  9. }
  10. ...


IndexController.php
  1. ...
  2. $this->_helper->MyHelper()->mojaFukcja('Slawek');
  3. ...


Include path: (index.php)
  1. '.'
  2. . PATH_SEPARATOR . BASE_PATH.'/library'
  3. . PATH_SEPARATOR . APPLICATION_PATH.'/configs'
  4. . PATH_SEPARATOR . APPLICATION_PATH.'/models'
  5. . PATH_SEPARATOR . APPLICATION_PATH.'/models/DbClasses'
  6. . PATH_SEPARATOR . APPLICATION_PATH.'/models/DbClasses/generated'
  7. );


Ten post edytował Sajrox 24.08.2009, 14:34:36
Go to the top of the page
+Quote Post
seth-kk
post
Post #6





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

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


mniejwiecej ale direct() na ogol lepiej wykozystywac jako metode niz zamiennik getInstance()


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





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

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


NO własnie nie mog e rozgryźc jak uzyć tego directa poprawnie. próbuje sprawdzać inne klasy Helperów w Zendzie ale za dużlo to nie mówi.




Może jakiś przykład jak Ty to rozwiązałeś ?

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





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

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


tak, ewentualnie jesli helper ma wiele metod to warto wzorowac sie np na Zend_Controller_Action_Helper_ViewRenderer
jesli to nadal zamalo to podaj konkretniejszy przyklad


--------------------
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 - 14:55