【问题标题】:Octobercms - Getting frontend user avatarOctobercms - 获取前端用户头像
【发布时间】:2018-08-19 13:01:50
【问题描述】:

所以我正在尝试生成一个前端用户列表,但我无法访问头像 url。

我能够获取所有用户名,但是当我尝试对个人资料图片执行相同操作时,会显示回退。 当有人登录时,{{ user.avatar.url }} 正在用户页面上工作。

我已尝试查找后端使用的查询以在预览中获取用户头像,但我无法找到它。

我不知道这是否相关,但我正在使用https://octobercms.com/plugin/netsti-uploader 让前端用户上传他们的头像。它正在工作,因为如果我在前端上传它,后端用户预览会显示正确的头像

这是我用来获取所有用户的方法:

代码:

use October\Rain\Auth\Models\User;

function onInit() {
    $this['activatedUsers'] = User::whereIsActivated(true)->get();
}

标记

<div>
{% for user in activatedUsers %}
    <div class="card list">
        {% if user.avatar %}
            <img class="userimg" src="{{ user.avatar.url }}">
        {% else %}
            <img class="userimg" src="assets/images/user.png">
        {% endif %}
            <p class="name"><span class="rank-title">NAME</span><br>{{ user.name }}&nbsp;{{ user.surname }}</p>
        {% if user.last_login %}
            <p><span class="rank-title">LAST UPDATE</span><br>{{ user.last_login }}</p>
        {%endif%}
    </div>
{% endfor %}

感谢所有帮助,谢谢

【问题讨论】:

    标签: php octobercms avatar


    【解决方案1】:

    尝试这样使用它。

    use RainLab\User\Models\User;
    
    function onInit() {
        $this['activatedUsers'] = User::whereIsActivated(true)->get();
    } 
    

    标记

    {% for user in activatedUsers %}
        <div class="card list">
        {{ user.avatar.path }}
        </div>
    {% endfor %}
    

    【讨论】:

    • @MikeStardust 您可能想要使用geThumb() 方法,该方法使您能够创建具有特定尺寸的缩略图 - 请参阅下面的答案
    【解决方案2】:

    查看October\Rain\Database\Attach\File 类以查看可用方法:

    getThumb($w,$h,$options) - 生成并返回缩略图路径

    getPath() - 返回访问文件的公共地址

    getLocalPath() - 返回此文件的本地路径。如果文件被远程存储,它将被下载到一个临时目录。

    getDiskPath() - 返回文件的路径,相对于存储磁盘

    例如:

    {{user.avatar.getThumb(200,200, { mode : 'crop' } )}}

    【讨论】:

      【解决方案3】:

      安装“模型前端文件上传器”插件

      在您的标记中插入{% component 'imageUploader' %}

      插入

      function onInit()
      {
          $user = Auth::getUser();
          if($user){
              $component = $this->addComponent(
                  'NetSTI\Uploader\Components\ImageUploader',
                  'imageUploader',
                  ['modelClass'=>'RainLab\User\Models\User','modelKeyColumn'=>'avatar', 'deferredBinding' => false]
              );
      
              $component->bindModel('avatar', $user);
          }
      }
      

      在您的代码部分

      【讨论】:

        【解决方案4】:

        您可以使用 'avatar' 查询后端用户模型。

        use Backend\Models\User;
        
        ...
        $user = User::where('id', $author_id)->with('avatar')->first();
        ...
        
        <h1>{{ user.avatar.path }}</h1>
        

        【讨论】:

          猜你喜欢
          • 2017-04-30
          • 1970-01-01
          • 2017-08-06
          • 2019-07-02
          • 2019-10-31
          • 2021-11-07
          • 1970-01-01
          • 2021-01-29
          • 1970-01-01
          相关资源
          最近更新 更多