簡體   English   中英

如何覆蓋 Elgg 的用戶圖標上傳操作

[英]How to override Elgg's user icon upload action

我一直在嘗試覆蓋默認的用戶圖標操作。

my_plugin/classes/Elgg/MyHooksOverrides/EntityIconOverride.php

<?php

namespace Elgg\MyHooksOverrides;

class EntityIconOverride {
    public function __invoke(\Elgg\Hook $hook) {
        return false;
    }
}

my_plugin/elgg-plugin.php

<?php

return [
    'plugin' => [
        'name' => 'My Plugin',
        'activate_on_install' => true,
    ],
    'view_extensions' => [],
    'hooks' => [
        'prepare' => [
            'entity:avatar:prepare' => [
                \Elgg\MyHooksOverrides\EntityIconOverride::class => [],
            ],
        ],
    ],
];

我也用entity:icon:prepare嘗試過這個設置:

<?php

return [
    'plugin' => [
        'name' => 'My Plugin',
        'activate_on_install' => true,
    ],
    'view_extensions' => [],
    'hooks' => [
        'prepare' => [
            'entity:avatar:prepare' => [
                \Elgg\MyHooksOverrides\EntityIconOverride::class => [],
            ],
        ],
    ],
];

但是,這沒有任何效果。 鈎子應該阻止上傳繼續,但上傳成功意味着插件鈎子永遠不會被調用。

如何確保我的插件掛鈎被調用/或者,換句話說,我如何覆蓋默認的用戶圖標上傳操作?

謝謝大家。

您應該覆蓋'avatar/upload'操作:

return [
    'plugin' => [
        'name' => 'My Plugin',
        'activate_on_install' => true,
    ],
    'actions' => [
        'avatar/upload' => [
             'controller' => \MyPlugin\Actions\AvatarUpload::class,
         ],
    ],
];

埃爾格文檔

此外,您可以使用“操作/驗證”掛鈎:

順便說一句,我不建議在您的自定義插件中使用\Elgg命名空間。 改用\MyPlugin

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM