Yii2 - 通过超链接提交表单值

时间:2015-12-22 15:45:34

标签: php forms yii2 submit

我在detailView

中显示了一个表单

它位于'value'=>$form->field($model, 'dummy5'),

<?= DetailView::widget([
    'model' => $model,
    'options' => ['class' => 'detail1-galeria-view2'],
    'attributes' => [
        // cria um array com a fotografia, em que carrega a path no campo fieldName da bd
        [
            'attribute'=>'',
            //'value'=>$model->foto,
            'value'=>Html::a(Html::img(Yii::$app->getUrlManager()->getBaseUrl() . "/" .$model->foto, ['width'=>'192', 'height' => "256"]), $model->foto),
            'format' => 'raw',
        ],
        [
        'attribute'=>'',
        'value'=>$model->nome,
        ],
        [
        'attribute'=>'',
        'value'=>$model->categoria,
        ],
        [
        'attribute'=>'',
        'value'=>$model->descricao,
        ],
        [
        'attribute'=>'',
        'value'=>$model->valor.' '.'€',
        ],
        [
        'attribute'=>'',
        'format' => 'raw',
        'value'=>$form->field($model, 'dummy5'),
        ],
        // info
        [
        'attribute'=>'',
        'format' => 'raw',
        // nesta hiperligação passo o valor do model->nome deste registo para encomendas/create
        //'value'=> Html::a(Yii::t('app','Comprar'), Url::toRoute(['encomendas/create', 'nome' => $model->nome, 'preco' => $model->valor])),
        'value' => Html::a('Submit', ['encomendas/create', 'nome' => $model->nome, 'preco' => $model->valor, 'qt' => $model->dummy5], ['data' => ['method' => 'post', 'params' => ['action' => 'produtos/view2']]]),
        ],
    ],
]) ?>

我需要使用Html::a将表单值提交给控制器,或者如果这种方式不可能,请尝试使用可以传递所有其他参数('nome' => $model->nome, 'preco' => $model->valor)的submitButton。

为什么我更喜欢Html::a提交(如果可能,而不是Html::submitButton),因为我学会了如何通过get传递给控制器​​,并使用Html::submitButton我不知道知道是否可以做到。

Html :: a的缺点是它不验证我的模型,所以没有任何东西到达控制器:

$qt = Yii::$app->request->get('qt');

带有表单和下一个视图的detailView中的照片我希望$ qt来自另一个表单,并且要插入的照片在此新表单中具有默认值: enter image description here

enter image description here

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为您的问题可能是POSTGET变量的混合。您的Html::a链接不是提交按钮,也不会从表单中收集数据。由于模型属性qt1为空,因此没有为链接提交数据。

要解决此问题,您需要合并GETPOST个请求,例如:

'format' => 'raw',
'value' => Html::submit('Submit')

现在将通过post请求提取并提交,并提供用户已添加的表单数据。

您需要更改表单的action参数。您可以在此处为提交创建GET参数;

在您创建表单的位置,请执行此操作;

 $form = ActiveForm::begin([
                'action' => Url::to(['encomendas/create', 'nome' => $model->nome, 'preco' => $model->valor])
                ]);

你的档案应该是

'attribute'=>'',
    'format' => 'raw',
    'value'=>$form->field($model, 'qt'),
        ],

现在,在您的操作encomadas/create中,您将可以访问以下变量:

通过GET请求 - nomepreco

通过POST请求 - qt1

现在,您可以在操作和视图中使用这些内容。

答案 1 :(得分:0)

Html::a('Link Name', ['url/to'], ['data' => [
                                                'method' => 'post',
                                                'params' => ['user_id' => Yii::$app->user->id],
                                            ], 'class' => 'btn btn-primary']);