热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Submittingonlypictureincommentresultsindebugerror.

Whatstepswillreproducetheproblem?Withouttypinganythingincomment,u


What steps will reproduce the problem?

Without typing anything in comment, upload a picture and hit send. Put anything in comment with picture, operates normal. I believe this uses the same validation as normal posting where the main message can't be left blank (which should probably also change when someone only wants to post a picture with no text).

What is the expected result?

Picture posted in comment with no text needed.

What do you get instead?

Debug Error popup on debug instance.

Additional info


1
PHP Notice 'yii\\base\\ErrorException' with message 'Trying to get property of non-object' \n\nin /var/www/socialrealms/html/protected/humhub/modules/comment/widgets/views/comment.php:68\n\nStack trace:\n#0 /var/www/socialrealms/html/protected/humhub/modules/comment/widgets/views/comment.php(68): yii\\base\\ErrorHandler->handleError(8, 'Trying to get p...', '/var/www/social...', 68, Array)\n#1 /var/www/socialrealms/html/protected/vendor/yiisoft/yii2/base/Vie...",

| Q | A
| ---------------- | ---
| HumHub version | 1.6.5 AND current dev branch.
| PHP version | 7.4
| Operating system | Ubuntu 16 server

该提问来源于开源项目:humhub/humhub

Hi guys,
Thank you for your replay



Seems we're still seeing the original error above, with the current code patched we still receive:

How did you patch this correction code? Did you manually put it inside /humhub/protected/humhub/modules/comment/models/Comment.php
or maybe you simply took code from the "master" branch of humhub repository?



I am sorry, but at the moment this correction did not deliver to the master branch and to the production Humhub.com as well. Please wait for us put it there. It will not take long.

Could

1
$user->contentcontainer_id

be replaced with

1
$user->contentContainer->id

in this case or does this go against the container id rules ?

PHP language is strict to a using case of variables, properties, and methods. Expression $user->contentcontainer_id - is correct.

Why this issue appeared in the view /var/www/socialrealms/html/protected/humhub/modules/comment/widgets/views/comment.php at 68 string.

Please look into this code:

1
2
       UserImage::widget(['user' => $user, 'width' => 40, 'htmlOptions' => ['class' => 'pull-left', 'data-contentcontainer-id' =>

       $user->contentcontainer_id]]);

We are extracting the property from the User model $user->contentcontainer_id. But $user (the User model object instance) is empty. You can't take property from the void (from an empty object).

Why $user empty? That's happened because the system did not create an instance of Comment model in the CommentController actionPost method string 140:

1
2
3
4
        $comment = new Comment(['message' => $message]);

        $comment->setPolyMorphicRelation($this->target);

        $comment->save();

        $comment->fileManager->attach($files);

And setPolyMorphicRelation did not work and the related model User did not fill up. It is empty.

And when the system processed the widget Comment in this code:

1
        return $this->renderAjaxContent(CommentWidget::widget(['comment' => $comment]));

It passed the Comment model to a widget controller.

in widgets/comment.php in 48 string

1
2
3
4
5
6
7
8
9
10
11
12
       return $this->render('comment', [

           'comment' => $this->comment,

          ** 'user' => $this->comment->user,** -- _here system have passed_ **empty object**

           'justEdited' => $this->justEdited,

           'deleteUrl' => $deleteUrl,

           'editUrl' => $editUrl,

           'loadUrl' => $loadUrl,

           'createdAt' => $this->comment->created_at,

           'updatedAt' => $updatedAt,

           'canEdit' => $this->comment->canEdit(),

           'canDelete' => $this->comment->canDelete(),

      ]);

Why Comment model instance did not create? Because of the rule of validation on the "message" column.

See you
Alex


   



推荐阅读
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Unity3D 中 AsyncOperation 实现异步场景加载及进度显示优化技巧
    在Unity3D中,通过使用`AsyncOperation`可以实现高效的异步场景加载,并结合进度条显示来提升用户体验。本文详细介绍了如何利用`AsyncOperation`进行异步加载,并提供了优化技巧,包括进度条的动态更新和加载过程中的性能优化方法。此外,还探讨了如何处理加载过程中可能出现的异常情况,确保加载过程的稳定性和可靠性。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在Android开发中,实现多点触控功能需要使用`OnTouchListener`监听器来捕获触摸事件,并在`onTouch`方法中进行详细的事件处理。为了优化多点触控的交互体验,开发者可以通过识别不同的触摸手势(如缩放、旋转等)并进行相应的逻辑处理。此外,还可以结合`MotionEvent`类提供的方法,如`getPointerCount()`和`getPointerId()`,来精确控制每个触点的行为,从而提升用户操作的流畅性和响应性。 ... [详细]
  • 在MFC框架中,存在多个全局函数,用于在不同对象间获取信息或创建新对象。其中,`afxGetApp`函数尤为关键,它能够帮助开发者轻松获取当前应用程序的实例指针。本文将详细解析`afxGetApp`函数的内部机制及其在MFC应用程序中的具体应用场景,探讨其在提升代码可维护性和灵活性方面的优势。此外,还将介绍其他常用全局函数如`AfxWinInit()`和`AfxBeginThread()`的功能和使用方法,为开发者提供全面的参考。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
author-avatar
林世光_519
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有