我是zend的新手。我尝试使用zend创建包含两个字段的简单表单。当我点击提交按钮时出现以下错误,
Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in D:\xampp\htdocs\study\quickstart\application\controllers\EmployeeController.php, line 35' in D:\xampp\php\PEAR\Zend\Controller\Response\Abstract.php:282 Stack trace: #0 D:\xampp\php\PEAR\Zend\Controller\Response\Abstract.php(300): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 D:\xampp\php\PEAR\Zend\Controller\Response\Abstract.php(727): Zend_Controller_Response_Abstract->sendHeaders() #2 D:\xampp\php\PEAR\Zend\Controller\Front.php(984): Zend_Controller_Response_Abstract->sendResponse() #3 D:\xampp\php\PEAR\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch() #4 D:\xampp\php\PEAR\Zend\Application.php(358): Zend_Application_Bootstrap_Bootstrap->run() #5 D:\xampp\htdocs\study\quickstart\public\index.php(25): Zend_Application->run() #6 {main} thrown in D:\xampp\php\PEAR\Zend\Controller\Response\Abstract.php on line 282
我检查了以下链接, zend header already send problem
我删除了所有文件中的空格并给出了密码,但我仍然得到同样的错误。
如何解决此错误?
以下显示 EmployeeController.php :
<?php
class EmployeeController extends Zend_Controller_Action
{
public function init()
{
}
public function indexAction()
{
$form = new Default_Form_Empdetails();
$this->view->form = $form;
$request = $this->getRequest();
$formData = $request->getPost();
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
$empName = $form->getValue('empName');
$empAddress = $form->getValue('empAddress');
$emp = new Default_Model_DBTable_Employee();
$emp->addAlbum($empName, $empAddress);
$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
}
}
}
?>
请帮助我
答案 0 :(得分:24)
可能是因为某些文件中php关闭标记(?>
)后出现了额外的空格。
另请阅读本文:
PHP development: why redirects don't work (headers already sent)
- 任何HTML输出,包括DOCTYPE声明或任何HTML标记, 包括页面负责人
- 在页面的开始PHP标记之前或之外的额外空格 包含文件的PHP标记
- 在调用header()或session_start()
之前使用print()或echo- 使用virtual()包含文件
- 使用页面开头的字节顺序标记(BOM)
例如: