Zend форма дает ошибку - PullRequest
0 голосов
/ 26 января 2012

Я новичок в ZF.i сделал функцию, которая в основном делает форму это код

 require_once 'Zend/Form.php';
  function getLoginForm(){
$username = new Zend_Form_Element_Text('username');
$username->setLabel('Username:')
        ->setRequired(true);

$password = new Zend_Form_Element_Password('password');
$password->setLabel('Password:')
        ->setRequired(true);

$submit = new Zend_Form_Element_Submit('login');
$submit->setLabel('Login');

$loginForm = new Zend_Form();
$loginForm->setAction('/login/index/')
        ->setMethod('post')
        ->addElement($username)
        ->addElement($password)
        ->addElement($submit);
 return $loginForm;
}

это ошибка

Fatal error: Class 'Zend_Form_Element_Text' not found in C:\xampp\htdocs\phoggi\application\controllers\LoginController.php on line 68

строка 68 относится к этой строке

 $username = new Zend_Form_Element_Text('username');

Далее, как я могу добавить классы CSS к каждому элементу в моей форме, а также как добавить мои собственные сообщения об ошибках .plz взять один элемент и добавить собственные сообщения об ошибках и Класс CSS. Благодарю вас всех. РЕДАКТИРОВАНИЕ это мой index.php

<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir . '/library' . PATH_SEPARATOR . get_include_path());
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Paginator.php';
include_once 'Zend/Db/Adapter/Pdo/Mysql.php';
require_once 'Zend/View.php';
require_once 'Zend/Controller/Action/Helper/ViewRenderer.php';
$params = array('host'         => 'localhost',
        'username'  => 'root',
        'password'    => '',
        'dbname'        => 'xyz'
       );

     $DB      = new Zend_Db_Adapter_Pdo_Mysql($params);
       $DB->setFetchMode(Zend_Db::FETCH_OBJ);
     Zend_Registry::set('DB',$DB);

 $view = new Zend_View();
 $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
 $viewRenderer->setView($view);
 Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
 Zend_Controller_Front::run('../application/controllers');
 ?>

Ответы [ 4 ]

1 голос
/ 28 января 2012

Вот как выглядит стандартный файл index.php, созданный Zend_Tool версии 1.11:

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

это вместе с application.ini - все, что требуется для работы Zend Framework.

//application.ini

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

;database setup
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = username
resources.db.params.password = password
resources.db.params.dbname = databasename

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

похоже, что многое в вашем index.php должно быть либо в вашем application.ini, либо в вашем bootstrap.php. Я думаю, именно поэтому ваш автозагрузчик не работает.

//bootstrap.php

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

Помогите себе и пройдите несколько учебных пособий, которые помогут вам настроить приложение ZF за несколько минут.
Zend Framework Quickstart
Учебник Роба Аллена по Zf 1.11
Вместе вы можете пройти через это через час или два, но они обеспечат прочную основу для настройки ZF и основных функций.

1 голос
/ 26 января 2012

Так как ваша ошибка происходит в 'application \ controllers \ LoginController.php', может показаться, что вы используете приложение Zend.Если это так, вам никогда не нужно вызывать require () или require_once ().Автозагрузчик Zend сделает это за вас.

Ваш код должен работать как есть.Вы правильно устанавливаете фреймворк в свой путь включения?Ваш index.php (настоящий в вашем веб-корне) должен вызвать set_include_path ({библиотека zend здесь}) перед созданием объекта приложения.

1 голос
/ 27 января 2012

Далее, как я могу добавить классы CSS к каждому элементу в моей форме и

, когда элементы формы отображаются, у них будут идентификаторы, и класс будет отражать необходимые настройки.Например, это Zend_Form_Element_Text:

<dt id="name-label"><label for="name" class="required">Page Name:</label></dt>
<dd id="name-element">
<input type="text" name="name" id="name" value="" size="40"></dd>
<dt id="headline-label"><label for="headline" class="required">Headline:</label></dt>

Это поведение можно изменить с помощью декораторов, но я позволю кому-то другому заняться этой темой.

также какдобавьте мои собственные сообщения об ошибках. Возьмите один элемент и добавьте собственные сообщения об ошибках и класс css. Благодарю вас всех.

Большинство классов Zend_Validation позволяют вам задавать обычные сообщения.

Другой пример:

$id = new Zend_Form_Element_Text('id');
        $id->setLabel('Employee Number:')
                 ->setOptions(array('size' => '6'))
                 ->setRequired(TRUE)
                 ->addValidator('regex', TRUE, array(
                     'pattern' => '/^[0-9]{6}$/',
                     'messages' => array(
                         Zend_Validate_Regex::INVALID => '\'%value\' is not a valid Employee Number.',
                         Zend_Validate_Regex::NOT_MATCH => '\'%value\' does not match, requires a 6 digit Employee Number'
                         )))
                 ->addFilter('Digits')
                 ->addFilter('HtmlEntities')
                 ->addFilter('StringTrim')
                 ->removeDecorator('HtmlTag');
0 голосов
/ 26 января 2012

require_once 'Zend/Form/Element/Text.php';

...