我是Zend的新手,我的问题对你来说很简单。我想制作一个控制器,在另一个视图中显示表单输入数据。数据是电子邮件文本和上传的文本文件。我创建了索引视图和结果视图。 但我一无所获。当我用文本替换$ email的值时,它的工作原理!我找不到出了什么问题。 控制器还应按名字
显示已排序的文件Id,Firstname,Lastname
5,John,Doe
6,Adam,Ant
7,Victor,Hugo
8,Britannie,Spears
这是我的控制者:
public function indexAction()
{
// initialzing of the customized form
$form = new Application_Form_Upload();
$rq = $this->getRequest();
$isForm = true; // the form has to be shown only if true
if ($rq->isPost()) {
if ($form->isValid($rq->getPost())) {
// show the uploaded data instead of the form
$isForm = false;
$this->view->data = new Application_Model_DataViewer();
$this->view->data->parseFromForm($form);
$result = new Zend_View();
$this->view->result= $result;
$this->render('result');
}
}
if ($isForm) {
$this->view->form = $form;}
}
这是我的模特:
class Application_Model_DataViewer
{
/**
* @var string Entered e-mail address
*/
private $email;
/**
* @var array Array of extracted data from uploaded file
*/
private $data;
public function __construct(){
$this->email=null;
$this->data=array();
}
/**
* Extracts the data from the form-object and saves it internally
* @param $form Application_Form_Upload
*/
public function parseFromForm($form){
if(!isset($form))return;
if(!isset($form->file)||!$form->file instanceof Zend_Form_Element_File){
throw new Zend_Exception('The field File is empty or has wrong type');
}
// for validation of the IDs
$ival = new Zend_Validate_Int();
// reading the CSV-file (values should be separated by comma, if not - should be extended)
if(($fp = @fopen($form->file->getFileName(), 'r')) !== false){
while(($data = fgetcsv($fp, 500, ',')) !== false){
if(
!is_array($data)
||!$ival->isValid($data[0])
||count($data)<3
)continue;
$this->data[$data[1]] = $data;
}
}else{return;}
@fclose($fp);
ksort($this->data);
$this->email = $form->getValue('email');
}
/**
* @return null|string
*/
public function getEmail(){
return $this->email;
}
/**
* @return array
*/
public function getData(){
return $this->data;
}
}
这是我的索引和结果视图
<?php
// the form should only be rendered if form must be shown
if(isset($this->form)){
$this->form->setAction($this->url());
echo $this->form;
}
?>
结果视图:
<?php
// if the required data is submitted, it will be checked and displayed
if(isset($this->data)){
?>
<p>Thank you <strong><?php echo $this->escape($this->data->getEmail()); ?></strong>.</p>
<p>The result of the sorting is:
<?php
foreach($this->data->getData() as $row){
echo '<div>', $this->escape($row[0]), ',',
$this->escape($row[1]), ',',
$this->escape($row[2]), '</div>';
}
?></p><?php
}
?>
答案 0 :(得分:0)
在视图中使用部分帮助器。
请参阅:http://framework.zend.com/manual/2.2/en/modules/zend.view.helpers.partial.html
例如。你的index.phtml
if ($this->data) {
echo $this->partial("result.phtml", array("data" => $this->data->getData()));
}
您可以通过 $ this-&gt; data
访问result.phtml中的变量