我正在使用form-post方法上传图像。
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'action'=>Yii::app()->createUrl('/admin/user/uploadimage'),
'htmlOptions' => array('enctype' => 'multipart/form-data')
));
echo $form->fileField($model, 'image');
echo CHtml::submitButton('Upload');
$this->endWidget();
上传图像后,页面会被刷新,并显示页面顶部。提交表单时,是否有可能将页面限制在视图中的同一位置,而不使用ajax。请帮助我或提出一些建议来实现该场景。或者这是不可能的形式张贴。
如果您不想使用ajax,也可以使用CURL。以下是链接:)
http://php.net/manual/en/book.curl.php
提交后是否显示图像表单如果是,则在页面底部添加以下代码:如果没有,那么为任何div分配一个id,并将上传表单更改为下面代码中的表单
<?php
if(isset($_FILES["image"]["type"])){
?>
<script type="text/javascript">
window.location='#upload-form';
</script>
<?php
}?>
简短的答案是否定的。
长期的答案可能是:-)如果没有Ajax,您将需要进行完整的页面刷新,尽管您可以将用户发送到图像上传部分。但是,如果您不想刷新页面,tou将需要使用Ajax。
我找到的最简单的方法是:-
在view.php中,将id分配给htmldiv标签,就像我分配了"image section"一样
<div id ="image-section"
<?php $form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'action'=>Yii::app()->createUrl('/admin/user/uploadimage'),
'htmlOptions' => array('enctype' => 'multipart/form-data')
));
echo $form->fileField($model, 'image');
echo CHtml::submitButton('Upload');
$this->endWidget();?>
</div>
现在在控制器中附加#id和url。
public function actionUploadImage()
{
//You code
$scrollLocation = "#image-section"
$this->redirect ( "index$scrollLocation", array (
'model' => $model
) );
}