我有一个从excel加载数据的数组,现在我需要将这些数据发送到另一个视图以供审查测试,但是找不到因为是一个函数中的数组,我尝试使用序列化和反序列化但是这个在网址中发送characteres限制错误。
public function excel() {
$this->loadModel('SoyaProductorCompra');
$excel=array();
$k=0;
if ($this->request->is('post')) {
$datos = new Spreadsheet_Excel_Reader();
$datos->read($this->request->data['SoyaProductorCompra']['excel']['tmp_name']);
for ($i = 2; $i <= $datos->sheets[0]['numRows']; $i++) {
$excel[$k]['producto']=$datos->sheets[0]['cells'][$i][1];
$excel[$k]['toneladas']=$datos->sheets[0]['cells'][$i][2];
$excel[$k]['precio']=$datos->sheets[0]['cells'][$i][3];
$excel[$k]['total']=$datos->sheets[0]['cells'][$i][4];
$excel[$k]['fecha']=$datos->sheets[0]['cells'][$i][5];
$excel[$k]['id']=$datos->sheets[0]['cells'][$i][6];
$k++;
}
$this->set('excels',$excel);
//return $this->redirect(array('action' => 'revision', serialize($excel))); not found
}
}
这是我的另一个函数,它返回数组并在我的视图中显示但未找到
public function revicionexcel($data) {
//$data=unserialize($data); not work
//debug($data); not work
}
答案 0 :(得分:0)
我不会通过查询字符串发送整个电子表格的数据,即使它足够小也不能这样做。我的意思是,如果有人开始手动编辑URL,会发生什么?将数据写入文件,或将其保存在会话中。
答案 1 :(得分:0)
你似乎在同一个控制器内调用了这个功能,对吧?
如果是这样,那你为什么不使用:
public function excel()
{
//read excel into $excel variable
$this->revicionexcel($excel);
}
所以,这里不需要重定向
虽然建议您在model layer
中使用Excel阅读,因为此图层适用于所有类型的数据管理。
然后,根据您的评论,您可以将所有读数移至模型,并从控制器中调用它:
public function excel($data) {
//your excel reading function as you have it on the controller.
//change all "$this->request->data" references for the parameter "$data"
//be sure to return the excel properly.
...
return $excel;
}
public function revision()
{
$excel = $this->SoyaProductorCompra->excel($this->request->data);
$this->set('excels', $excel);
}
我们在这里做的是从动作revision()
调用模型中的excel开头,并将它们发送到它的视图。你不需要在这里重定向。