【问题标题】:How to get value of attribute in controller from Form in view Yii 2如何从 View Yii 2 中的 Form 中获取控制器中的属性值
【发布时间】:2020-06-14 10:57:43
【问题描述】:

我创建了一个名为 (users) 的表,它有两列:namepass。 在视图中我创建了这样的表单:

<?php
$form = ActiveForm::begin() ?>

<div class="form-group">
  <?= $form->field($model, 'user') ?>
  <?= $form->field($model, 'password') ?>
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?>
    </div>
</div>
<?php ActiveForm::end() ?>

所以我需要将这两个属性传递给控制器​​以插入数据库。

【问题讨论】:

  • 谢谢,但它没有帮助因为我需要将此值插入数据库,我不知道如何从视图中传递值以及如何将其处理到控制器中以及如何插入控制器中的数据库
  • 你真的看过链接的内容吗?? ..那么如果您这样做了,请告诉我您不明白的地方..因为该链接描述了完全按照您的要求进行操作所需的所有流程和所有部分..
  • 无论如何我已经发布了一个 aswer 希望是明确的
  • 再次谢谢你我读到了我的问题现在是这样的,当我得到名称并从控制器中的视图传递时,控制器从视图中获取空值,如下所示:SQLSTATE [23000]:完整性约束违规:1048 列 'name' 不能为 null 正在执行的 SQL 是:INSERT INTO test (name, pass) VALUES (NULL, NULL)

标签: php mysql yii yii2 yii2-basic-app


【解决方案1】:

在 YourController.php
假设您有一个 Create 操作来管理您在 db 中的插入 以及用于管理用户输入的创建视图(仅显示正确结果的视图)

    <?php

    namespace app\controllers;

    use Yii;
    use yii\web\Controller;
    use app\models\EntryForm;

    class YourController extends Controller
    {
        // ...existing code...

        public function actionCreate()
        {
            $model = new User();

            if ($model->load(Yii::$app->request->post()) && $model->validate()) {
                // valid data received in $model

                // 
                if( $model->save()){
                    return $this->render('create', ['model' => $model]);
                } else {
                    // this is just for debug  
                    var_dump('not inserted');
                    die();
                }

            } else {
                // either the page is initially displayed or there is some validation error
                return $this->render('view', ['model' => $model]);
            }


        // render the initial page per allow to the user input 
        return $this->render('create', ['model' => $model]);
       }  

       ....
   }

【讨论】:

【解决方案2】:

在您的控制器中,您可以通过这种方式获取您的帖子表单:

Yii::$app->request->post()

这样你就可以将值加载到你的模型中

$model->load(Yii::$app->request->post())

在这里你可以找到starting point

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2021-12-28
    • 1970-01-01
    • 2017-02-27
    • 2015-06-11
    • 2020-08-28
    • 2018-12-05
    相关资源
    最近更新 更多