Post otagowany jako ‘Zend Framework’

ZF Application

02-11-2010

Powstanie Zend_Application to milowy krok w rozwoju Zend Framework, ale podczas jego używania napotkałem na pewną niedogodność.

Otóż, jeżeli chcesz używać jakiegokolwiek zasobu aplikacji (Resource) w akcji trzeba użyć trochę skomplikowanego kodu:

$this->getInvokeParam(‘bootstrap’)->getResource(‘nazwa_zasobu’);

lub poza akcją (np. w modelu) takiego:

Zend_Controller_Front::getInstance()->getParam( ‘bootstrap’ )->getResource(‘nazwa_zasobu’);

Jak dla mnie to dość skomplikowane i nie pozwala EclipsePDT na podpowiadanie składni.

Ale jest rozwiązanie. Proste i szybkie:

global $application;
$application->getResource(‘nazwa_zasobu’);

Oczywiście $application to nazwa zmiennej która została użyta w index.php – tutaj użyta nazwa zmiennej występującej w domyślnie wygenerowanym przez Zend_Tool projekcie. Można go używać w całej aplikacji bez ograniczeń.

Na dodatek takie rozwiązanie działa kiedy mamy ustawione w php.ini: register_globals na Off. W takim środowisku to testowałem :)

Mam nadzieję, że rozwiązanie to pozwoli na prostsze używanie zasobów aplikacji (Zend_Application_Resource_*)

Obecnie rozważamy Proposal’a aby “ustatycznić” pobieranie zasobów z Zend_Application lub przebudowanie go tak aby mógł być używany jako Singleton.

Zend Framework + JQuery + DataGrid

09-25-2009

Pisząc projekt dla swojej pracy magisterskiej potrzebowałem dobrej kontrolki do wyświetlenia użytkownikowi dużej ilości danych.

Standardowe tabelki HTMLowe nie były do końca tym, czego oczekiwałem po nowoczesnej aplikacji internetowej. Pomijając fakt konieczności przeładowania całej strony, charakter funkcjonalności, którą chciałem zaimplementować, nie pozwalał na to, aby strona została odświeżona przy przechodzeniu na kolejne strony wyników. Po przeszukaniu internetu na różną kombinację fraz: Zend Framework, DataGrid i pod koniec również jQuery  natrafiłem na na prawdę dobre rozwiązanie: http://www.trirand.com/blog/

Jako jedno z niewielu które znalazłem, prezentuje się w sposób profesjonalny, porównywalny do możliwości legendarnego już (lecz niestety płatnego) rozwiązania ExtJS.

Zachęcam do zapoznania się z możliwościami tej kontrolki.

Zend Framework Contributors

09-02-2009

Miło nam zakomunikować, że właśnie otrzymaliśmy status: Zend Framework Contributor.

Ale czym tu jest się chwalić. Oto informacja przysłana przez Zend’a:

Your account in our issue tracker (JIRA) is now associated with your
CLA, and we have added your account to the contributor group. You may
now post content and patches in the issue tracker, proposals on the
wiki, and any other contributions to Zend Framework may be accepted.

Czyli w skrócie: możemy  rozwijać, poprawiać błędy oraz dodawać nowe funkcjonalności do Zend Framework.

Wkrótce, tutaj na blogu, ukażą się szczegółowe informacje na temat pomysłów, które będziemy proponować.

We’re Zendish :) !!!!!!

Zend Framework – Validator dla potwierdzenia hasła, emaila itp

08-13-2009

Przy pracy nad pewnym projektem opartym o Zend Framework, zaistniała potrzeba walidacji elementów formularza, tak, by zawartość jednego elementy była identyczna jak innego, np hasło i jego potwierdzenie. Aby tego dokonać wystarczy stworzyć prosty walidator:

?Download Confirm.php
<?php
 
class Validate_Confirm extends Zend_Validate_Abstract {
	/**
	 *
	 * @var Zend_Form_Element
	 */
	protected $_matchedField;
 
	const NOT_CONFIRMED = 'notConfirmed';
 
	protected $_messageTemplates = array(
			self::NOT_CONFIRMED => 'notConfirmed'
		);
 
	public function __construct( Zend_Form_Element $matchedField ) {
		$this->_matchedField = $matchedField;
	}
 
	public function isValid( $value ) {
		if( $this->_matchedField->getValue()==$value ) {
			return true;
		} else {
			$this->_error( self::NOT_CONFIRMED );
			return false;
		}
	}
 
}
 
?>

następnie taki walidator używamy w naszym formularzu:

<?php
class Activation extends Zend_Form {	
 
	public function init(){
		//user_name
		$user_name = $this->createElement('text', 'user_name');
		$user_name->setRequired(true);
		$user_name->setLabel( 'user_name' );
		$this->addElement($user_name);
 
		//user_password
		$user_password = $this->createElement('password', 'user_password');
		$user_password->setRequired(true);
		$user_password->setLabel( 'user_password' );
		$this->addElement($user_password);
 
		//user_password_repeat
		$user_password2 = $this->createElement('password', 'user_password_repeat');
		$confirmVal = new Validate_Confirm( $user_password );
		$user_password2->addValidator($confirmVal);
		$user_password2->setRequired(true);
		$user_password2->setLabel( 'user_password_repeat' );
		$this->addElement($user_password2);
 
		//submit
		$submit = $this->createElement( 'submit', 'submit' );
		$submit->setLabel('btnNext');
		$this->addElement($submit);
	}
}
?>

Dzięki takiemu zabiegowi nasz formularz sam sprawdzi, czy odpowiednie pola są sobie równe.