sk811229
- sk811229 2018-11-29 已签到连续签到1天,获得了5个金钱
表单这个东西,我在文档上给你找了一段,其实差不多类似:
https://www.yiichina.com/doc/guide/2.0/input-forms
Yii2没有把视图和哪个提交地址绑定,这个还是原始HTML的表单知识,action还是你来写,爱咋写咋写,自古以来就是这样,不写的话默认就是当前的路由,这不是野路子:<?php $form = ActiveForm::begin([ 'id' => 'xxxxx_form', //这里使用了Url助手函数封装下而已,直接写也OK的。 'action' => Url::to(['/myserver/user', 'uid' => $uid]), 'layout' => 'horizontal', 'options' => ['class' => 'form-content'], 'method' => 'POST', 'fieldConfig' => [ 'horizontalCssClasses' => [ 'label' => 'col-xs-4 col-sm-4', 'wrapper' => 'col-xs-8 col-sm-8', ] ] ]); ?>
如果你想提交到dealwith()方法,这个有点难度,但是也不是不可能。
Yii2的控制器里一般包含两种方法:
一种是内联方法,类似这种actionXXXX()的,内联的最多;
还有一种是独立方法,这个需要使用【行为机制】,简单来说控制器里写个 actions()方法,看下这篇文档:
https://www.yiichina.com/doc/guide/2.0/structure-controllers#standalone-actions
其它再说。谢谢,对我很有帮助。
- sk811229 赞了回答
表单这个东西,我在文档上给你找了一段,其实差不多类似:
https://www.yiichina.com/doc/guide/2.0/input-forms
Yii2没有把视图和哪个提交地址绑定,这个还是原始HTML的表单知识,action还是你来写,爱咋写咋写,自古以来就是这样,不写的话默认就是当前的路由,这不是野路子:<?php $form = ActiveForm::begin([ 'id' => 'xxxxx_form', //这里使用了Url助手函数封装下而已,直接写也OK的。 'action' => Url::to(['/myserver/user', 'uid' => $uid]), 'layout' => 'horizontal', 'options' => ['class' => 'form-content'], 'method' => 'POST', 'fieldConfig' => [ 'horizontalCssClasses' => [ 'label' => 'col-xs-4 col-sm-4', 'wrapper' => 'col-xs-8 col-sm-8', ] ] ]); ?>
如果你想提交到dealwith()方法,这个有点难度,但是也不是不可能。
Yii2的控制器里一般包含两种方法:
一种是内联方法,类似这种actionXXXX()的,内联的最多;
还有一种是独立方法,这个需要使用【行为机制】,简单来说控制器里写个 actions()方法,看下这篇文档:
https://www.yiichina.com/doc/guide/2.0/structure-controllers#standalone-actions
其它再说。 - sk811229 回答了问题 求教表单是如何同控制器的方法关联的?
我发现可以在视图文件中 创建 ActiveForm 对象后直接修改他的参数 $action 把表单提交到任意的方法处理,只是看起来有点‘野路子’就没有别的比较正规的官方写法吗?
下面是我在视图文件中的写法,请大神指点下:<?php $form = ActiveForm::begin();$form->action='/basic/web/index.php?r=site/other'?> <?= $form->field($model,'name');?> <?= $form->field($model,'email');?> <div class="form-group"> <?= Html::submitButton('提交',['class'=>'btn btn-primary']);?> </div> <?php ActiveForm::end();?>
这个是权威指南的一个实例,添加
$form->action='/basic/web/index.php?r=site/other'
之前表单是给 entry() 方法处理的 现在 提交给了 other() 处理,实测通过。。。
还望指点,谢谢。。。 Yii2的过滤和验证正如你上面所写的load()方法那样,是建立在【场景】机制下的管理操作。
$model = new User(); $model->setScenario(User::SCENARIO_CREATE);//设置场景 $model->load(Yii::$app->request->post()//根据场景填充数据到模型$model if ( $model->save()) { //根据场景进行过滤和验证,无误后入库 return "success"; } else { return $model->getErrors(); }
你可以花10分钟先读一篇这个文档,这里都是Yii2在model层进行输入验证和过滤起作用的地方:
https://www.yiichina.com/doc/guide/2.0/input-validationsql注入的问题,我觉得php各个框架都差不多,因为PDO在底层已经解决了一大部分这方面的问题。
各个框架的ORM都会有的。Yii2是AR,model;laravel就是eloquent类似。几乎不用担心SQL注入问题,除非自己坑自己。
建议把数据库部分看看,也许心里会有点感觉吧!多了些。。。
- sk811229 提出了问题请教如何对表单提交的数据进行过滤
- sk811229 2018-11-27 已签到连续签到4天,获得了20个金钱