我正在使用Yii2并且一直在使用通过AJAX执行POST的链接来检索一些数据并且它一直工作正常;但是我注意到,如果我从页面中删除一个表单,它就不再有效,并且出于某种原因不会在标题中发送CSRFtoken。我在页面上还有几个隐藏表单,它们在两种情况下都存在。下面是两种情况的总结:工作情况:页面上的所有CSRF都是相同-名为csrf-token的meta标记,页面上的主要表单以及所有隐藏的表单,它们都使用相同的CSRFtoken,这与请求的header中发送的token相同。...现在我更改场景以便生成非工作版本。不工作的情况:在这种情况下页面上没有主窗体。名为csrf-token的met
我已经学习Yii2框架几个星期了。其核心概念之一是“胖模型,瘦Controller”。阅读advancedapplicationtemplate的源代码我发现由于这个概念,几乎所有的逻辑都包含在模型中。好吧,如果我没有使用过SpringMVC的一些经验,那么根本不会有任何问题,其中服务层似乎是一种将应用程序的逻辑与其实际数据分离的自然方式。所以问题是:在使用Yii2构建的应用程序中实现这种类似企业的结构是否是一种好的做法?更具体地说:是否值得将Yii的模型分解为实体、DTO和服务?提前致谢!P.S.:这个问题似乎有点过于抽象或主观,但我对Yii2没有什么经验,我想知道Yii2中是否有任
我想在用户更改当前密码时从所有浏览器中注销该用户。将新密码保存到数据库后,我已将代码放入我的Controller函数中:$session=Yii::$app->session;unset($session['id']);unset($session['timestamp']);$session->destroy();它仅适用于我更改密码的浏览器。但不适用于所有浏览器。我检查了session变量-$session['id']是否存在。即使我从不同的浏览器更改密码后,我也可以看到它存在于其他浏览器中。 最佳答案 相关问题@github/
我在我的yii2基本应用程序中使用动态模型。以下是我的动态模型的代码。$model=new\yii\base\DynamicModel(['role','from_rm','to_rm','user1_subdistrcts']);$model->addRule(['user1_subdistrcts','role'],'required',['message'=>"Pleaseselectthisfield."])->addRule(['from_rm'],'checkRm');我愿意在from_rm字段中使用自定义验证函数“checkRm”,我还定义了这样的checkRm函数:pu
正在使用Yii开发一个日语论坛网络应用程序。问题是我们开始收到一些英语垃圾邮件,因为验证码是英文字符,任何能阅读它的人基本上都可以发送垃圾邮件。我想要日文汉字的验证码,它是多字节字符串类型。以前有人在Yii中做过多字节验证码吗?任何建议或链接都会有所帮助。*如果我可以预先定义显示的字符,那也很酷,但这是额外的收获。 最佳答案 我找到了解决方案(至少对于日语使用而言)。查看Yii老手softark很棒的CCaptcha扩展jcaptcha:http://www.yiiframework.com/extension/jcaptcha
我正在尝试提交表单,表单提交后当前页面应该保留用户输入的数据。如何实现?publicfunctionactionUpload(){$model=newUploadModel();$basemodel=newBaseContactList();$importmodel=newImportedFilesModel();$importmodel->name=$basemodel->name;$importmodel->import_date=$now->format('Y-m-dH:i:s');$importmodel->server_path=$temp;$importmodel->fil
我的模型中有一个afterSave函数,它根据用户给出的开始时间和持续时间保存某些服务的到期日期。我的afterSave工作正常,但在保存模型后它没有被重定向而是显示空白页。型号:publicfunctionafterSave($insert){$month="+".$this->duration_in_months."month";$this->exp_date=date("Y-m-dH:i:s",strtotime($month));$this->save(['exp_date']);returnparent::afterSave($insert);}Controller:if($
我正在使用Yii的扩展infinite-scroll-pager.我的数据提供者有6个寄存器,但我希望它只显示前3个。我该如何完成?triggerPageTreshold(sic)是否必须完成这项工作?$listView=$this->widget('zii.widgets.CListView',array('id'=>'activities-scroll-list','dataProvider'=>$dataProvider,'itemView'=>'/experience/_experience_item','cssFile'=>null,'template'=>$this->re
我在模态窗口中有两个ActiveForms,在提交第一个表单后,我需要更新第二个并保持模态。据我所知,pjax可以处理该问题,但无法使其正常工作。在_form.php中,我有ActiveForm和应该更新的小部件:'form','enableAjaxValidation'=>true,]);?>$riskModel->id])?>'solutionItems',])?>//needtoupdatethiswidgetfield($riskModel,'solutions_order')->widget(SortableInput::classname(),['items'=>$risk
我使用Slim框架在PHP中开发了几个WebAPI,移动应用程序(iOS和Android)使用这些框架来处理它们的请求并获取所需的数据。最后,在每个API中,我将从移动应用程序收到的请求发送到我网站代码库中的相应函数。然后相应的函数接受请求和请求参数,处理请求并返回所需的数据。然后API将数据以JSON格式返回给移动应用程序。这是当前的工作流程。现在,我想让网站资源(即来自网站代码库和数据的功能)的可用性受用户身份验证的约束。简而言之,我想在这种情况下实现“基于token的身份验证”方案。下面应该是我实现“基于token的身份验证”后的流程:当用户通过在请求中向登录API发送用户名和密