I have this DetailView that renders in a view belonging to ProdutosController
some fields (foto, nome, etc.). Inside the detailView is a hyperlink that displays for every recorded showed and when pressed renders a view from EncomendasController
, and EncomendasController
must show only the name (field nome) of the product in which i activate the 'Comprar' hyperlink.
<?= 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.' '.'€',
],
// info
[
'attribute'=>'',
'format' => 'raw',
'value'=> Html::a(Yii::t('app','Comprar'), Url::toRoute(['encomendas/create'])),
],
],
]) ?>
How can i pass only the field "nome" from the product detailView in which i pressed the hyperlink button to another view belonging to the other controller named EncomendasController
and then show in the new view that same name?
You can pass the controller name
followed by controller method
as URL
and pass 'nome'
as attribute. This 'nome'
will be redirected
to the page.
View
'value'=> Html::a(Yii::t('app','Comprar'), Url::toRoute(['encomendas/create', 'nome' => $model->nome])),
Controller
class EncomendasController
{
.
.
public function actionCreate($nome) {
$nome = Yii::$app->request->get('nome');
return $this->redirect('create',['nome'=>$nome]);
}
.
.
}
create.php (view)
<?php echo $nome;?>