Autor wpisu: singles, dodany: 09.08.2011 20:26, tagi: php, zend_framework
W dzisiejszym odcinku cyklu ZendFramework Quick Tip zajmiemy się wyjaśnieniem fenomenu parametrów, które „biorą się znikąd” podczas korzystania z helpera url
.
Wprowadzenie
Jak większość frameworków, ZF udostępnia helpery pomocnicze dla widoków. Jednym z takich helperów jest Zend_View_Helper_Url
, który służy do tworzenia adresu URL w ramach naszej aplikacji na bazie przekazanych parametrów. Warto z niego korzystać, ponieważ rozwiązuje problem prawidłowej ścieżki bazowej, kiedy nie używamy vhostów i nasza aplikacja umieszczona jest np. w katalogu http://example.com/some/folder/public/
Przykładowe wywołanie:
<?php // application/views/scripts/foo.phtml $this->url(array('controller' => 'foo', 'action' => 'bar', 'additional_param' => 123)); ?>
wygeneruje adres: http://example.com/foo/bar/additional_param/123/
Jednakże, kiedy z poziomu www. strony spróbujemy wygenerować inny adres, np. tylko do kontrolera odpowiedzialnego za zarządzanie użytkownikami:
<?php $this->url(array('controller' => 'users')) ?>
zamiast adresu http://example.com/users
otrzymamy http://example.com/users/bar/additional_param/123/
Ale dlaczego?
Otóż to, aby zrozumieć działanie wystarczy spojrzeć na implementację helpera:
class Zend_View_Helper_Url extends Zend_View_Helper_Abstract { public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true) { $router = Zend_Controller_Front::getInstance()->getRouter(); return $router->assemble($urlOptions, $name, $reset, $encode); } }
Pomijając pobieranie obiektu routera z kosmosu, najważniejsze są dla nas parametry, a konkretniej trzeci z nich: $reset
. Odpowiada on za zresetowanie obecnie ustawionych parametrów ścieżki. Jak widać, jego domyślną wartością jest false
– i to jest powód, dla którego w przedstawionym wcześniej przykładzie otrzymaliśmy dodatkowe parametry.
Rozwiązanie
Jak łatwo się domyślić, rozwiązanie jest bardzo proste – wywołanie powinno wyglądać tak:
$this->url(array('controller' => 'users'), null, true);
Oczywiście, pisanie wielu takich wywołań może być dla niektórych niewygodne. Dlatego możemy albo napisać własny helper, gdzie domyślnie ustawimy parametr na true.
Innym rozwiązaniem może być stworzenie helpera Zend_View_Helper_Url
i umieszczenie go w pliku APPLICATION_PATH . /views/helpers/Url.php
:
Autor wpisu: batman, dodany: 09.08.2011 12:00, tagi: css
Dzisiejszym wpisem rozpoczynam serię, w której będę się dzielił z Wami odkryciami, publikowanymi przeze mnie na Twitterze. Dzisiaj skupię się na CSS.
- One line CSS Grid Framework – ile można zmieścić w jednym wierszu? Okazuje się, że bardzo wiele. Najlepszym przykładem jest tutaj One line CSS Grid Framework, który przy pomocy kilkudziesięciu znaków pozwoli zbudować wielokolumnowy layout.
- Compass – framework CSS rozszerzający możliwości Sass o predefiniowane mixin dostarczające gotowe rozwiązania dla typografii, stylowania elementów strony, restowania CSS.
- CSS3 Transitions Without Using :hover – efekty przejść zastosowane dla innych niż :hover pseudo-klas. Dużo kodu, a do każdego demo.
- The future of CSS layouts – głębokie spojrzenie na layouty tworzone przy użyciu CSS. Wiele przykładów opisujących takie możliwości CSS jak flexbox, grid, pozycjonowane floaty czy regiony.
- CSS3 Bling in the Real World – artykuł o CSS3, przyszłości tej technologii, jej możliwościach oraz stanie bieżącym.