我是Yii的新手,并试图了解现有的网络应用程序,所以请耐心等待。
我一直遇到某个功能的问题,在actionView
被调用here时似乎无法保留数据,但我想也许我对这个问题的解决方法都错了。
相反,我想也许按钮可以直接从控制器运行该功能,而不是......之前的任何事情。
我查看了具有此内容的示例here:
<?php echo CHtml::submitButton('CSV Report', array('submit'=>'getReport')); ?>
getReport
是我的控制器中的函数(actionGetReport)。
不幸的是,它不起作用。这是我_commentform.php
的代码:
<?php $post = $forum; ?>
<?php $comment = $model; ?>
<div id="comment_form<?=$post->id?>" class="other-member-comment-box">
<?php
$user=Persons::model()->findByAttributes(array('party_id'=>Yii::app()->user->id));
$country=Lookup_codes::model()->findByAttributes(array('id'=>$user->country));
$location = empty($country) ? '' : 'from '.$country->name;
?>
<div class="user-profilepic">
<a href="<?php echo Yii::app()->createUrl('persons/view/id/'.$user->showViewLinkId())?>"><img src="<?php
if(!empty($user->image) AND file_exists( Yii::getPathOfAlias('webroot').'/images/profile_picture/'.$user->party_id . $user->image)){
echo Yii::app()->request->baseUrl.'/images/profile_picture/'.$user->party_id . $user->image;
} else echo Yii::app()->request->baseUrl.'/images/profile_picture/NA.jpg';
?>"></a>
</div>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'comment-form',
'action'=>Yii::app()->createUrl('forum/view/id/'.$forum->id),
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->hiddenField($model,'node_type_id',array('value'=>'7')); ?>
<?php echo $form->error($model,'node_type'); ?>
</div>
<div class="row">
<?php echo $form->hiddenField($model,'content_id',array('value'=>$forum->id)); ?>
<?php echo $form->error($model,'content_id'); ?>
</div>
<div class="row">
<?php echo $form->hiddenField($model,'category',array('value'=>$forum->category)); ?>
<?php echo $form->error($model,'category'); ?>
</div>
<div class="row">
<?php echo $form->textArea($model,'content',array('rows'=>6, 'cols'=>90),array('id'=>'sample')); ?>
<?php echo $form->error($model,'content'); ?>
</div>
<input type="hidden" value="<?php echo $view; ?>" id="view" name="view"/>
<div class="row buttons">
<?php
if ($view == 'view'){
if ($model->isNewRecord) {
echo CHtml::submitButton('Reply', array('id'=>'comment'.$comment->id));
} else {
echo CHtml::button('Save', array('submit'=>'updatecomment'));
}
}?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
</div>
这是我控制器的UpdateComment
功能:
public function actionUpdateComment()
{
Yii::log(CVarDumper::dumpAsString("ForumController: Update COMMENT!"));
Yii::log(CVarDumper::dumpAsString($_POST['Comment']));
exit();
}
我不确定$_POST['Comment']
会得到什么,但如果代码有效,我至少会指望它注销"ForumController: Update COMMENT!"
。它没有。
我尝试将submitButton
更改为button
,但这完全取消了按钮功能。
接下来,我尝试了this answer here。
所以我将submitButton
代码更改为:
echo CHtml::submitButton($model->isNewRecord ? 'Reply' : 'Save',array('id'=>'comment'.$comment->id));
并将此添加到最后:
<script>
$(document).ready(function() {
$('#text_form_submit').click(function(ev) {
ev.preventDefault();
$.ajax({ type: 'POST', dataType: 'JSON',
url: '<?php echo Yii::app()->createUrl("forum/UpdateComment"); ?>',
success:function(data){
if(data !== null) {
$('#Text_group').val(data);
$('#text-form').submit();
}
},
error: function() {
alert("Error occured!!!.");
},
});
return false;
});
});
</script>
不完全确定代码的作用,除了调用函数之外,它也不起作用(我也从GET更改POST并返回)。
有什么建议吗?我觉得CActiveForm
应该归咎于此,但即使修改它也会导致网站加载页面失败。
答案 0 :(得分:0)
你有一个很长的问题,可能是你应该用更简单的问题分解你的问题..
如果回答提交按钮不包含目标函数,请参阅此文档
http://www.yiiframework.com/doc/api/1.1/CHtml#submitButton-detail
目标函数(php控制器/动作)以表格形式定义..这是来自html ..是定义提交数据目标的表单定义..
如果要执行actionGetReport,则应在表单操作中定义目标
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'comment-form',
'action'=>Yii::app()->createUrl('yourController/actionGetReport'),
'enableAjaxValidation'=>false,
)); ?>