我是ZF的新手。我已经创建了一个基本上使Form成为代码的函数
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 class.Thanking你们所有人。 已编辑这是我的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');
?>
答案 0 :(得分:1)
由于您的错误发生在'application \ controllers \ LoginController.php'中,您似乎正在运行Zend应用程序。如果是这样,您永远不需要调用require()或require_once()。 zend自动加载器将为您完成。
您的代码应该按原样运行。您是否正确地将框架设置为包含路径?在创建应用程序对象之前,index.php(Web根目录中的真实文件)应该调用set_include_path({zend的库here})。
答案 1 :(得分:1)
此外,我如何将css类添加到表单中的每个元素 和
当显示表单元素时,它们将具有id,并且该类将反映所需的设置。例如,这是股票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>
这种行为可以通过使用装饰器来改变,但我会让其他人解决这个问题。
还如何添加我自己的错误消息.plz采取一个元素并添加 自定义错误消息和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');
答案 2 :(得分:1)
这是标准的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
Rob Allen's Zf 1.11 tutorial
您可以在一两个小时内完成这些工作,但它们将为ZF设置和基本功能提供坚实的基础。
答案 3 :(得分:0)
require_once 'Zend/Form/Element/Text.php';