求教表单是如何同控制器的方法关联的? [ 2.0 版本 ]
如题,想请教下视图的表单是如何提交到控制器的?
这个问题我仔细看了权威指南给的实例,一点头绪都没有。
比如:
视图文件 view.php
我的表单 myform
控制器 mycontroller.php
表单处理方法 dealwith()
我想使用 dealwith() 方法处理表单 myform,应该怎么写?写在视图还是别的地方?或者如何实现???
希望能给点意见,谢谢。。。
我发现可以在视图文件中 创建 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() 处理,实测通过。。。
还望指点,谢谢。。。
最佳答案
-
表单这个东西,我在文档上给你找了一段,其实差不多类似:
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
其它再说。共 1 条回复sk811229 觉得很赞
其他 0 个回答
sk811229
最后登录:2022-10-06
在线时长:16小时47分
- 粉丝0
- 金钱770
- 威望10
- 积分1030