我在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来自另一个表单,并且要插入的照片在此新表单中具有默认值:
有什么想法吗?
答案 0 :(得分:0)
我认为您的问题可能是POST
和GET
变量的混合。您的Html::a
链接不是提交按钮,也不会从表单中收集数据。由于模型属性qt1
为空,因此没有为链接提交数据。
要解决此问题,您需要合并GET
和POST
个请求,例如:
'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
请求 - nome
和preco
。
通过POST
请求 - qt1
现在,您可以在操作和视图中使用这些内容。
答案 1 :(得分:0)
Html::a('Link Name', ['url/to'], ['data' => [
'method' => 'post',
'params' => ['user_id' => Yii::$app->user->id],
], 'class' => 'btn btn-primary']);