我在我的模型中创建了一个beforeSave方法(扩展了GXActiveRecord),ifisNewRecord永远不会被触发。不过,我的beforeSave()被调用了。当我打印$this->isNewRecord变量时,它是错误的。这个变量什么时候设置为false呢?我很确定这是新的publicfunctionbeforeSave(){if(parent::beforeSave()){if($this->isNewRecord){$this->setAttribute('doc_status','new');print"something";}else{$this->setAtt
我使用Yii1.1.3开发了web应用程序,我对Corephp非常陌生,谁能给我一些关于如何在Yii应用程序中使用composer的详细信息。我使用过Bootstrap、RESTFullYii、yii-user和其他一些扩展。我们将不胜感激。 最佳答案 我假设您知道如何创建您的composer.json等等?如果是这样,那么您可以像使用任何其他应用程序一样将Composer与Yii一起使用。您只需要修改Yii的classMap以确保它能够满足加载的Composer要求。编辑你的index.php(可能还有你的yiic.php,如果你
我关注了这个tutorial但是我仍然去刷新网页,然后去文件,仍然找不到我发送的日志消息我在Controller中写了以下行:Yii::log("IndexCheckout",CLogger::LEVEL_ERROR);还有我的配置:'log'=>array('class'=>'CLogRouter','routes'=>array(array('logFile'=>'trace.log','class'=>'CFileLogRoute','levels'=>'error,info,warning',),//uncommentthefollowingtoshowlogmessageso
我有这个代码:echo$form->dropDownList($model,'defaultPrinterId',CHtml::listData(Printer::model()->findAll(),'id','name'),array('prompt'=>'--None--'));这给了我一个像这样的下拉列表:--None--但是,当表单发布时,它会向我的表添加一个值,其中defaultPrinterId为0。除此之外,我如何将其设置为null,因为它是一个可为null的字段? 最佳答案 如果您想严格遵循MVC,那么与模型相关的
当执行过程中发生错误时,我们会得到堆栈跟踪,如下图所示。seethis每次执行页面时,我都希望在页面底部看到此跟踪。(即使没有错误)这样我就可以找出运行的页面以及框架内发生的事情我怎样才能激活它?非常感谢 最佳答案 “堆栈跟踪”在错误场景之外没有多大意义,但您可以通过启用Debug模式来查看Yii正在做什么。在你的index.php添加defined('YII_DEBUG')ordefine('YII_DEBUG',true);并在Yii主要配置数组(config/main.php)的log组件中,将此数组添加到routes组件下:
我正在创建一个审计跟踪模块,我将把它放在一个更大的系统中;我创建了一个表来存储跟踪条目,作为“审核员”我想看到当前登录的用户,他/她所在的页面,他/她做了什么Action,以及发生了什么变化什么时候……这些基本上是我想看到的;我的审计跟踪表如下所示:用户|时间戳|模块名称|行动|旧值|新值(value)|说明我基本上没有问题通过Yii::app()->session['username'];通过获取Controller的页面/模块和操作:$this->module->getName();$this->action->id;我的问题在于将旧值更改为新值,即用户所做的编辑。我可以通过逐字复
所以,我想在不同的地方有两个单选按钮,我一直在尝试寻找解决方案,每个人都建议使用radiolist,这在我的情况下是不可能的。如果我这样说(work_part_time按钮):(下)field($model,'work_part_time')->radio(['label'=>'yes','value'=>1])?>-field($model,'hour_week')->textInput(['type'=>'number','placeholder'=>'Hour/Week'])->label(false)?>field($model,'part_time_rate')->textI
$this->widget('zii.widgets.grid.CGridView',array('dataProvider'=>$dataProvider,'columns'=>array('title',//displaythe'title'attribute'category.name',//displaythe'name'attributeofthe'category'relation'content:html',//displaythe'content'attributeaspurifiedHTMLarray(//display'create_time'usinganexpr
我在访问yii的网络应用程序时卡住了。我的配置与所有者的设置相同,但是当我尝试访问时,出现错误“列必须是字符串或数组”。我该如何解决?提前致谢.. 最佳答案 报告错误信息时,准确的错误信息会很有帮助。实际的错误消息是:“列名称必须是字符串或数组”。使用确切的字符串,您可以搜索框架文件以查找提及它的位置。看起来某个地方的某个方法正在将无效的列名传递给CDbCommandBuilder的createInCondition方法。参见第722行:https://github.com/yiisoft/yii/blob/1.1.13/frame
我有一组事件记录,想以这种方式循环更改其中的某些字段:$error=false;foreach($itemsas$item){$item->is_paid=self::PENDING;$error=$error||!$item->save();}return$error;我想做的是更改所有这些项目的is_paid属性。如果失败,回滚其他人。如何使用事务来解决这个问题? 最佳答案 略看here,我能够在yii中找到事务管理,类似下面的内容应该适合你:$transaction=Yii::app()->db->beginTransacti