Как создать пользовательскую форму в Magento?

Добрый день!

Мне необходимо создать форму с полями, используя Varien_Data_Form и Varien_Data_Frorm_Element_*

Поля формы
- name
- email
- firstname
- lastname
- password
- confirm_password

Структура файлов и папок моего проекта

webinse_test.loc - папка моего проекта
-index.php - индексный файл magento
...
... файлы и папки magento
...
-Webinseform.php - файл с моей формой
-Webinseprocess.php - файл, куда будут приходить данные с формы и записываться в БД

содержимое Webinseform.php

<?php

include_once 'app/Mage.php';
Mage::init();
class Webinseform  {
public function _conctruct(){
        $form= new Varien_Data_Form(array(
    'id'=> 'webinseform',
    'action'=> $this->getUrl('webinse-test.loc/Webinseprocess.php', 
                array('id'=> $this-    >getRequest()->getParam('id'))),
    'method'=> 'post',
    'enctype'=> 'multipart/form-data'));
        $form->addField('name','text', array('label'=>'Name'));
        $form->addField('email','text',array('label'=>'Email'));
        $form->addField('firstname','text',array('label'=>'Firstname'));
        $form->addField('lastname','text',array('label'=>'Lastname'));
        $form->addField('password','text',array('label'=>'Password'));
        $form->addField('confirm_password','text',array('label'=>'Confirm_password'));
        echo $form->toHtml();
}
}



когда набираю URL webinse-test.loc/Webinseform.php
не выводится ничего. Ни ошибок ни формы.
Что я делаю не так?
Можно ли вывести просто форму? Без создания модуля?
  • Вопрос задан
  • 3897 просмотров
Решения вопроса 1
Hide
@Hide
инженер-программист
> Можно ли вывести просто форму? Без создания модуля?
Да, можно.

> Что я делаю не так?
У вас класс объявлен, а экземпляр класса нигде не создается (соответственно, конструктор не вызывается). Допишите в конец файла Webinseform.php
new Webinseform();

Либо другой вариант. Переместите код из конструктора непосредственно... в потоковый код файла, т.е. избавьтесь от класса Webinseform, необходимость которого в данном контексте сомнительна.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@misheniata
В классе надо было объявить переменную, которая инициализируется в конструкторе. И создать объект класса в потоковом коде:

<?php
include_once 'app/Mage.php';
Mage::init();

class Webinseform {

	public $form;
	
	public function __construct() {
		$this->$form = new Varien_Data_Form(array(
		'id'=> 'webinseform',
		'action'=> $this->getUrl('webinse-test.loc/Webinseform.php '),
		array('id'=> $this->getRequest()->getParam('id'))),
		'method'=> 'post',
		'enctype'=> 'multipart/form-data'));
			$form->addField('name','text', array('label'=>'Name'));
			$form->addField('email','text',array('label'=>'Email'));
			$form->addField('firstname','text',array('label'=>'Firstname'));
			$form->addField('lastname','text',array('label'=>'Lastname'));
			$form->addField('password','text',array('label'=>'Password'));
			$form->addField('confirm_password','text',array('label'=>'Confirm_password'));
			echo $form->toHtml();
	}
}

$form1 = new Webinseform();


P.S.: Только элементы формы оборачиваются в , а мне бы хотелось видеть их с новой строки. Неужели дорисовывать нужно вручную или есть какой-то красивый способ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы