我被赋予了将文件上传器放入最初在zend框架2中创建的项目的任务。我是初学者。
项目的结构使我感到困惑,因为它不遵循我用来熟悉项目的Zend Skeleton Application的结构。例如。该项目不包含module.config文件。
因此我使用了典型的ajax调用,但是我得到了一个类型EXCEPTION_NO_CONTROLLER错误。我试图找出如何在ZF2中拉出典型的ajax调用。
html和ajax调用是:
<form id="fileupload" method="POST" enctype="multipart/form-data">
<div class="row">
<input name="files[]" type="file" multiple/>
</div>
<div class="row">
<input type="submit" class="btn btn-success" value="Submit"/>
</div>
<div id="content" class="row">
</div>
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#fileupload').on('submit', function(e){
e.preventDefault();
$.ajax({
url: "upload.php",
type: "POST",
data: new FormData(this),
contentType:false,
processData: false,
success: function(data, textStatus){
$("#content").html("data: " + data + " status: " + textStatus);
},
error: function(data,textStatus){
alert("data: " + data + " status: " + textStatus);
}
});
});
});
</script>
在cupload.php我有:
<?php
$options = array(
'db_host' => 'hostname',
'db_user' => 'username',
'db_pass' => 'password',
'db_name' => 'dbname',
'db_table' => 'dbtable'
);
if (is_array($_FILES) ){
// MYSQL and PHP logic goes here
}
答案 0 :(得分:0)
从概念上讲,您的前端jQuery代码向后端PHP代码发出请求。在ZF2应用程序中,此类请求通过路由,控制器和操作进行处理。
所以,你需要:
添加将处理上传的路线。这将定义客户端代码(您的jQuery)必须向其发出请求的URL与将处理请求并返回响应的后端控制器/操作之间的映射
实施路线
修改前端代码以使用路由
不同的ZF2设置以不同的方式实现前两个步骤 - 路由和控制器/操作 - 但通常它在现有模块或甚至新模块中定义。这些事情的标准设置在ZF2 docs。
中描述