【问题标题】:How to change the front page & component image from the backend? how to get HTML tag attributes in php?如何从后端更改首页和组件图像?如何在 php 中获取 HTML 标签属性?
【发布时间】:2016-11-20 13:16:29
【问题描述】:

我的模型 Settings.php

class Settings extends Model
{
    public $implement = ['System.Behaviors.SettingsModel'];
    // A unique code
    public $settingsCode = 'dca_plugins_settings';
    // Reference to field configuration
    public $settingsFields = 'fields.yaml';
    /**
     * @var array Relations
     */
    public $attachOne = [ 'avatar' => ['System\Models\File'] ];
}

我的 Fields.yaml

fields:
  id:
    label: ID
    disabled: true

  avatar:
    label: Avatar
    type: fileupload
    mode: image
    imageHeight: 150
    imageWidth: 250

我的组件 comp.php

public $avatar_id = 1;

public function getAvatarImage($avatar_id)
{
    $var = \System\Models\File::select('disk_name')->where('attachment_id', $avatar_id)->first();           
    if (count($var) == 0) return "";

    return $var->path;
} 

function setMyAvatarId($id)
{
    $this->avatar_id = $id;
} 

我的html default.htm

{% set avatar_id= __SELF__.property("avatar_id") %}

{% if avatar_id is not empty %}
{% do __SELF__.setMyAvatarId(avatar_id) %}
{% endif %}

<img id="avatar-image" alt="Virtual agent avatar" src="{{ __SELF__.getavatarImage(avatar_id) }}">
<script>
var avatar_id = {{ avatar_id }};
</script> 

我设法获得了一个随机链接,但图片未显示

后端 - 模型设置

有谁知道如何定义页面属性?如何将我的页面链接到模型设置?

如何让它发挥作用?有人请帮助我~~我很迷茫:(

【问题讨论】:

    标签: php model-view-controller frontend backend octobercms


    【解决方案1】:

    要更改图像,您可以将其添加到模型中:

    public $attachOne = ['avatarImage'];
    

    您不必在数据库中创建名为avatarImage 的列,因为十月会自动将您的图像存储在另一个名为“system_files”或类似的表中。 因此,在您的 fields.yaml 中,您必须添加以下内容:

    avatarImage:
         type: mediafinder
         mode: image
         label: My Avatar
    

    然后,October 将在控制面板的设置控制器中创建一个 mediafinder 表单小部件,您可以对其进行更改。 要在前端页面中显示图像,您必须在页面的 php 代码部分添加一些代码

    $this['settings'] = //The Code to Get the Model;
    

    您可以轻松地使用 getPath() 方法显示图像。

    <img src="{{ settings.getPath() }}" />
    

    如果上面的代码不起作用,您可以将其替换为:

    <img src="{{ settings.getPath()|media" />
    

    我认为第二个可以正常工作,我有一段时间没有使用 october :D

    希望对你有帮助。

    【讨论】:

    • 谢谢 :) 我稍后再试。顺便说一句,你知道如何为组件设置唯一 ID 吗?这样当我复制component_1时,两个组件(component_1和另一个component_1)都可以在同一页面上正常工作。
    • 我对我的帖子进行了一些更改。你能看看吗?谢谢你:)
    • 其实不能这样设置头像id。但是无论如何,如果您获得图像的真实文件名但路径不是完整路径,则无论如何检查页面的源代码,您可能必须将|media 添加到前端的 src 中。如果您能提供显示页面源代码的屏幕截图,我可能会理解并帮助您更多。
    • 我发现链接是第一个入口源,你知道如何获取最后一个入口源吗?因为在我的 comp.php 中我放了“$var = \System\Models\File::select('disk_name')->where('attachment_id', $avatar_id)->first();”我认为是因为“first()”,但我尝试将其更改为“last()”,但它不起作用。
    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2014-11-07
    • 2011-07-03
    相关资源
    最近更新 更多