首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将变量从模型访问到控制器?

如何将变量从模型访问到控制器?
EN

Stack Overflow用户
提问于 2018-01-26 05:27:28
回答 1查看 983关注 0票数 0

我正在研究yii2。我遇到过这样一种情况:当安装了仪表并将其图像上传到服务器时,我必须向某人发送电子邮件。为此,我已经配置了swift mailer

有一个名为Installations的模型,它具有保存所有安装数据的功能。

代码语言:javascript
运行
AI代码解释
复制
public static function saveAll($inputs){
    $coutner = 0;
    $arr_status = [];

    foreach ($inputs as $input) {
        $s = new Installations;
        foreach ((array)$input as $key => $value) {
            if($key != 'image_names') {
                if ($s->hasAttribute($key)) {
                    $s->$key = $value;

                }
            }
        }



        $user = Yii::$app->user;

        if (isset($input->auth_key) && Users::find()->where(['auth_key' => $input->auth_key])->exists()) {
            $user = Users::find()->where(['auth_key' => $input->auth_key])->one();
        }


        $s->created_by = $user->id;

        if (Installations::find()->where(['ref_no' => $input->ref_no])->exists()) {
            $arr_status[] = ['install_id' => $input->install_id, 'status' => 2, 'messages' => "Ref # Already exists"];
            continue;
        }
        $s->sync_date = date('Y-m-d H:i:s  ');

        if($s->save()){

            if ($s->istallation_status == 'Installed') {

                Meters::change_status_byinstall($s->meter_msn, Meters::$status_titles[4]);
            }
            else if ($s->istallation_status != 'Installed' && $s->comm_status =='Failed')
            {
                Meters::change_status_byinstall($s->meter_msn, Meters::$status_titles[5]);
            }
            $arr_status[] = ['install_id' => $input->install_id, 'status' => 1];
            $coutner++;

            if (isset($input->doc_images_name)) {
                foreach ($input->doc_images_name as $img) {
                    $image = new InstallationImages;
                    $image->image_name = $img->image_name;
                    $image->installation_id = $s->id;
                    $image->save();
                }
            }
            if (isset($input->site_images_name)) {
                foreach ($input->site_images_name as $img2) {
                    $image2 = new InstallationImagesSite;
                    $image2->image_name = $img2->image_name;
                    $image2->installation_id = $s->id;
                    $image2->save();
                }
            }
        }else{
            $arr_status[] = ['install_id' => $input->install_id, 'status' => 0, 'messages' => $s->errors];
        }
        $status = $s->istallation_status;
        $msn = $s->meter_msn;
        $com = $s->comm_status;
        // want to pass these variables to the controller function

    }

    return ['status' => 'OK', 'details' => $arr_status, 'records_saved' => $coutner];

}

现在有一个名为InstallationController的控制器。这个控制器包含我的移动应用程序的所有APIs。下面是其中的两个主要函数

代码语言:javascript
运行
AI代码解释
复制
public function actionAddnew()
{
    $fp = fopen('debugeeeeeee.txt', 'w+');
    fwrite($fp, file_get_contents('php://input'));
    fclose($fp);
    $inputs = json_decode(file_get_contents('php://input'));

    return Installations::saveAll($inputs);
}

 public function actionSavephoto()
{


    try {
        $count = 0;
        foreach ($_FILES as $f) {
            $dd = pathinfo($f['name']);
            if (!isset($dd['extension']) || !in_array($dd['extension'], array('jpg', 'png', 'gif'))) {
                return ['status' => 'ERROR', 'uploaded_files' => $count, 'message' => 'Invalid File'];
                break;
            }
            if (move_uploaded_file($f['tmp_name'], Installations::UPLOAD_FOLDER . $f['name'])) {
                $count++;

                return ['status' => 'OK', 'uploaded_files' => $count];

                break;
            } else {
                return ['status' => 'ERROR', 'uploaded_files' => $count];
                break;
            }
        }

    } catch (Exception $x) {
        return ['status' => 'ERROR', 'message' => $x->getMessage()];
    }
}

移动应用程序将调用Addnew()应用程序接口,之后它将调用savephoto。现在,我想将$msn$status$com值从模型传递到控制器函数Savephoto

为此,我尝试使用session variables,但仍然无法获得所需的结果。

我还检查了问题Yii, how to pass variables to model from controller? ,但它不适用于我。

我怎样才能做到这一点?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-26 06:16:03

saveAll()中获取这些值的唯一方法是返回它们。目前,它们是在$s中的一个对象上定义的,每个循环都会被覆盖。最好的方法似乎是在foreach ($inputs...循环之外创建一个数组,并附加每个创建的Installations对象。

在最后返回它,并将它(或其中的相关元素)作为参数传递到actionSavephoto()中。然后,这些值将可以通过传递的对象的属性进行访问。此处理将发生在未图示的代码中,该代码先调用actionAddNew(),然后调用actionSavephoto()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48456211

复制
相关文章
1.5.3 访管指令与访管中断
访管指令是一条可以在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。
week
2018/08/24
2.3K0
什么是Servlet(原理,从访问到方法)
Servlet是SUN公司提供的一门用于开发动态WEB资源的技术。SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
云扬四海
2019/06/05
1.4K0
什么是Servlet(原理,从访问到方法)
ASP.NET MVC 5 -从控制器访问数据模型
在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。 在开始下一步前,先Build一下应用程序(生
葡萄城控件
2018/01/10
5.9K0
ASP.NET MVC 5 -从控制器访问数据模型
从 Kubernetes 资源控制到开放应用模型,控制器的进化之旅
你可能会疑惑为什么是一堆,因为我不是一个人,我只是众多控制器中的一员,你也可以把我看成是众多控制器的集合。我的职责就是监控集群内资源的实际状态,一旦发现其与期望的状态不相符,就采取行动使其符合期望状态。
米开朗基杨
2020/03/06
1.1K0
1955-2019:从钱学森之问到AI突围
导语:大国超级工程的背后,都有大规模的人才战略推动,人才战略带来技术突破,技术突破再形成一个行业的黄金时代。
AI科技大本营
2019/05/07
1.5K0
1955-2019:从钱学森之问到AI突围
数据分析之道:从灵魂三问到实践总结
导读:数据分析究竟是什么?需要掌握哪些技能?如何进行数据分析?本文是对于数据分析的实践与总结。
IT阅读排行榜
2021/02/05
7940
数据分析之道:从灵魂三问到实践总结
如何将PyTorch、TensorFlow模型转换为PaddlePaddle模型
将PyTorch模型转换为PaddlePaddle模型需要先把PyTorch转换为onnx模型,然后转换为PaddlePaddle模型。
用户1386409
2020/07/06
2.7K0
[CodeIgniter4]概述-模型,视图和控制器
当创建一个应用的时候,我们需要有一种便捷的代码结构。和很多 Web 框架类似, CodeIgnite 框架也使用了模型、视图、控制器结构,即 MVC 模式,来组织接着代码文件。这种方式可以将数据,展示部分和流程部分分别作为单独的部分存放在我们的应用中。需要注意的是,可能每个人会对某个元素所担任的角色有不同的看法,那么,下面我们就通过这个文档说明这些元素所担任的角色。
landv
2020/03/05
7770
MES 实施:从保姆型顾问到导师型顾问
掐指算下来,在 MES 行业做保姆已经好几年了,把客户服务的也挺妥帖。也是该提升下自己的层次逐渐向导师型顾问转变了,当然这也对自己的业务能力有更高的要求。所以从事本行业的同学们,在做了几年基础的实施工作后,一定要把自己向导师,专家这方面来培养。
李英杰同学
2019/12/30
6000
Tensorflow:模型变量保存
[1]Tensorflow实战Google深度学习框架: https://github.com/caicloud/tensorflow-tutorial/tree/master/Deep_Learning_with_TensorFlow/1.4.0
演化计算与人工智能
2020/08/14
1.3K0
基于隐变量的推荐模型基于隐变量的推荐模型
上一篇介绍了协同过滤,其重点就是在人-物品矩阵上,其中心思想是去对人或者物品进行聚类,从而找到相似人或者相似物品,用群体的智慧为个人进行推荐,但是,这种近邻模型也存在好多问题:
zhuanxu
2018/09/07
1.7K0
Laravel 控制器:从 MVC 模式聊起
到目前为止,我们定义的所有路由都是基于闭包函数实现的,前面已经提到过,随着应用体量的增长,不可能将所有路由都定义在单个文件中,且对于复杂的业务逻辑,闭包函数也不足以支撑,所以和其他 Web 应用框架一样,我们还可以通过控制器来定义路由。
学院君
2020/10/19
11.4K0
Laravel 控制器:从 MVC 模式聊起
Jupyter-Notebook 远程访
记得当时在说设置默认工作路径的时候,提过配置文件https://www.cnblogs.com/dotnetcrazy/p/9261524.html
py3study
2020/01/19
7570
Jupyter-Notebook 远程访
Asp.Net MVC4入门指南(5):从控制器访问数据模型
在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。 在开始下一步前,先Build一下应用程序(生成应用程序)(确保应用程序编译没有问题) 用鼠标右键单击Controller文件夹,并创建一个新的 MoviesController控制器。当Build成功后,会出现下面的选项。设定以下选项: · 控制器名称: MoviesController.(这是默认值)。 · 模板: MVC Controller wit
葡萄城控件
2018/01/10
4.2K0
Asp.Net MVC4入门指南(5):从控制器访问数据模型
程序员从佩洛西窜访事件中可以学到什么?
最近美国众议长佩洛西窜访台湾省的事件引起了全国乃至全世界的广泛关注,台海局势骤然紧张,大家这几天的心情也是经历了从起初的义愤填膺到倍感憋屈,再到最后豁然开朗过山车式的心路历程。表面上看佩洛西不顾中方的强烈反对以及严正交涉执意窜访台湾省好像是我们丢了“面子”,但是从之后国家对台海地区的进一步控制以及对台独势力的强有力的制裁打击的结果来看,实际上我们是赢了“里子”。高手出招从来都是连环招或者组合拳,后续还会有一系列的反制措施来震慑分裂势力的嚣张气焰,相信国家层面肯定会处理好这件事情。那么我们IT技术人员或者普罗大众在这件事情上可以学到什么呢?个人感觉国家在处理台海危机背后隐藏的三个高手思维非常值得我们深入思考,本文结合技术人员日常的工作谈谈这三个高手思维。
慕枫技术笔记
2023/03/20
2800
程序员从佩洛西窜访事件中可以学到什么?
Python进阶:如何将字符串常量转为变量?
前几天,我们Python猫交流学习群里的 M 同学提了个问题。这个问题挺有意思,经初次讨论,我们认为它无解。
Python猫
2019/04/09
4.1K0
从ajax获取参数到控制器Laravel
route Route::get('search', 'ShowstaffController@search'); 接收变量
双面人
2020/02/17
1.2K0
Nginx 配置 Https 免费证书访
现在做博客或者做网站没有 https 已经不行了,就记录一下我在腾讯云配置 https 的过程吧,非常简单,1个小时就可以了。
py3study
2020/01/15
2.1K0
HDFS——如何将文件从HDFS上删除
import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class FileDelete {  public static void main(String[] args) throws Exception  {   if(args.length != 1){   System.out.println("Usage filedelete <target>");   System.exit(1);   }   Configuration conf = new Configuration();   FileSystem hdfs = FileSystem.get(URI.create(args[0]),conf);   hdfs.delete(new Path(args[0]),false);  } }
星哥玩云
2022/06/30
3.5K0
点击加载更多

相似问题

如何将属性从模型访问到Django Queryset?

10

将保存的模型会话对象从控制器访问到视图

14

如何将变量从控制器传递到模型

229

如何将变量从模型传递到控制器

35

如何将变量从Joomla控制器传递到模型?

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文