Zend_Form with Zend_Validate with Zend_File_Transfer
How to build form using ini files.
Example includes Zend_Form elements, Zend_Validate and File uploads using Zend_File_Transfer.
Protected method to retrieve form config and fill data into selectbox.
protected function prepareProductForm()
{
$form = new Application_Form( ‘admin/product’ );$categories = array( ‘Select Category’ );
foreach( Application_Category::getCategories() as $category )
{
$categories[$category->categoryId] = $category->name;
}$form->getElement( ‘categoryId’ )->setMultiOptions( $categories );
return $form;
}
This method will render form from and handle submits. Will check for uploaded files.
public function productAction()
{
$form = $this->prepareProductForm();
$product = array();if ( $this->getRequest()->isPost() )
{
$product = new Application_Product(
array(
‘productId’ => $this->getRequest()->getParam( ‘productId’ ),
‘name’ => $this->getRequest()->getParam( ‘name’ ),
‘description’ => $this->getRequest()->getParam( ‘description’ ),
‘categoryId’ => $this->getRequest()->getParam( ‘categoryId’ ),
‘resellerPrice’ => $this->getRequest()->getParam( ‘resellerPrice’ )
)
);if ( !$form->isValid( $this->getRequest()->getPost() ) )
{
$this->view->errorMessages = array( “Validation Error” );
}/*
* Receiving files
*/
if ( !$form->photos->receive() || !$form->photom->receive() || !$form->photol->receive() )
{
$this->view->errorMessages = array( “Upload error” );
}if ( count( $this->view->errorMessages ) <= 0 )
{
try {
$product->save();
$this->view->message = “User successfully updated”;
}
catch ( Application_Service_Exception $ex )
{
$this->view->errorMessages = array( $ex->getMessage() );
}
}$product = $product->toArray();
}
elseif ( $this->getRequest()->getParam( ‘id’ ) )
{
$product = Application_Service::getInstance()->getProduct( $this->getRequest()->getParam( ‘id’ ) );
}$form->populate( $product );
$this->view->form = $form;
}
Ini file defining form containing elements.
# Product
admin.product.method = post
admin.product.options.description = ‘Create Product’admin.product.elements.productId.type = hidden
admin.product.elements.name.type = text
admin.product.elements.name.options.label = “Product Name”
admin.product.elements.name.options.required = trueadmin.product.elements.photos.type = file
admin.product.elements.photos.options.label = “Photo S”
admin.product.elements.photos.options.description = “( 100×110 ) Shown on Front page. Only jpg,png,gif formats supported”
admin.product.elements.photos.options.destination = APPLICATION_PATH “/../public/images/product”
admin.product.elements.photos.options.validators.extension.validator = Extension
admin.product.elements.photos.options.validators.extension.options.extension = “jpg,png,gif”
admin.product.elements.photos.options.validators.imagesize.validator = ImageSize
admin.product.elements.photos.options.validators.imagesize.width = 100
admin.product.elements.photos.options.validators.imagesize.height = 110admin.product.elements.photom.type = file
admin.product.elements.photom.options.label = “Photo M”
admin.product.elements.photom.options.description = “( 180×250 ) Shown on Auction Info Page. Only jpg,png,gif formats supported”
admin.product.elements.photom.options.destination = APPLICATION_PATH “/../public/images/product”
admin.product.elements.photom.options.validators.extension.validator = Extension
admin.product.elements.photom.options.validators.extension.options.extension = “jpg,png,gif”
#admin.product.elements.photom.options.validators.imagesize.validator = ImageSize
#admin.product.elements.photom.options.validators.imagesize.options.width = 180
#admin.product.elements.photom.options.validators.imagesize.options.height = 250admin.product.elements.photol.type = file
admin.product.elements.photol.options.label = “Photo L”
admin.product.elements.photol.options.description = “( 250×450 ) Shown on … Only jpg,png,gif formats supported”
admin.product.elements.photol.options.destination = APPLICATION_PATH “/../public/images/product”
admin.product.elements.photol.options.validators.extension.validator = Extension
admin.product.elements.photol.options.validators.extension.options.extension = “jpg,png,gif”
admin.product.elements.photol.options.validators.imagesize.validator = ImageSize
admin.product.elements.photol.options.validators.imagesize.width = 250
admin.product.elements.photol.options.validators.imagesize.height = 450admin.product.elements.description.type = textarea
admin.product.elements.description.options.label = “Description”
admin.product.elements.description.options.cols = 50
admin.product.elements.description.options.rows = 8admin.product.elements.resellerPrice.type = text
admin.product.elements.resellerPrice.options.label = “Reseller Price”
admin.product.elements.resellerPrice.options.required = trueadmin.product.elements.categoryId.type = select
admin.product.elements.categoryId.options.label = “Category”
admin.product.elements.categoryId.options.required = trueadmin.product.elements.submit.type = submit
admin.product.elements.submit.options.label = “Save”
