Yii2 - 将当前数据库字段值保存在 php 变量中

Posted

技术标签:

【中文标题】Yii2 - 将当前数据库字段值保存在 php 变量中【英文标题】:Yii2 - Save current database field value in php variable 【发布时间】:2015-12-21 09:57:44 【问题描述】:
    我正在 Yii2 做一个在线商店。 我有一个名为 products 的 mysql 表,用于在 看法。该表属于 ProductsController 和 Products 模型。该视图使用 ListView 和 $dataProvider 来显示产品图片和一些相关的文本和 int 值,例如名称、价格等。它还像在每条记录中显示一个购买按钮一样。 当我单击购买按钮时,它会转到另一个名为 EncomendasController 的控制器和另一个视图,该视图是另一个名为 Encomendas 的表,它是客户输入个人数据(姓名、地址等...)的表单字段。 我需要做的是:当客户端在 ProductsController 视图中单击按钮以从 listView 购买项目时,只有该项目字段名称必须存储,可能在一个变量中,并且在与 EncomendasController 相关的新视图中选择的产品名称将显示在收集客户个人数据以完成销售流程的字段上方。

有什么想法吗?

编辑 - 带有购买按钮的详细视图

<?= 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','PURCHASE'), Url::toRoute(['encomendas/create'])),
        ],
    ],
]) ?>

【问题讨论】:

在 GET 中传递 idProducts 模型,或者如果您使用发布和提交,则将其存储为隐藏输入。 好的。我阅读了有关该过程的信息,并且 SESSION 或 GET 似乎很容易处理。但是如何仅将我按下购买按钮的产品存储在 var 中。这可能很困难,因为所有产品都由 ListView 小部件同时显示,而且它是 $dataProvider。我如何告诉框架存储特定的产品 ID 或名称? 【参考方案1】:

我不确定我是否理解您想要实现的目标,但您可以将产品 ID 作为 GET 参数传输到下一个控制器 EncomendasController,然后在该控制器中加载与该产品相关的所有信息通过数据库中的 id。为此,您需要更改为每个产品生成的 url,方法是在其末尾添加 '&amp;id='.$dataProvider-&gt;id 之类的内容。

【讨论】:

但是当我在与 ProductsController 相关的视图中按下购买按钮时,它会使用以下 URL 从 encomendasController 呈现视图:localhost:8888/beladona/web/index.php?r=encomendas%2Fcreate 在上面的 Url 中,它无法区分我想要传递给新控制器的产品。 向我们展示您的购买按钮代码。正如 Aleks 所说,只需将 id 添加到您的链接中,您就会在 GET 变量的控制器中获得产品 id。 编辑完成。现在显示超链接的代码。

以上是关于Yii2 - 将当前数据库字段值保存在 php 变量中的主要内容,如果未能解决你的问题,请参考以下文章

Yii2,如何将登录用户的用户名自动保存在另一个表中?

更改Yii2中表单字段中的属性值

如何从 Select2 Widget Yii2 将多个值保存到数据库

yii2 为啥数组存个数据会报 setting unknown property

Yii2动态表格wbraganca复制值到克隆字段[重复]

PHP:预先填写 PDF 文件的字段并将其保存为默认值