0

我想在作为母版页一部分的菜单栏中显示用户的图像。大师之刃.php

<div class="login_area">
    @if (Auth::check())
    <img src="{{asset('public/user_images/1531068734.jpg')}}" height="40px"
    width="40px" alt="" class="pull-left img-circle login"> 
    <a href="{{ route('logout') }}" onclick="event.preventDefault();                                                
      document.getElementById('logout-form').submit();"><i class="fa fa-sign-in" aria-hidden="true"></i> Logout</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
     <input type="hidden" name="_token" value="{{ csrf_token() }}">
  </form>

     @else 
     <a href="http://www.abc.in\login">Login</a><a href="http://abc.in/register">Registration</a> 
@endif
   </div>

图像模型:每个图像都与每个配置文件相关联。每个配置文件都与用户相关联。

<?php
namespace App\Model;
use Illuminate\Database\Eloquent\Model;
class image extends Model
{

protected $fillable = 
['profile_id','user_id','image_name','image_status','image_permission'];
protected $primaryKey = 'image_id';
public function profile()
{

return $this->belongsTo(profile::class,'id','id');
}
}
4

5 回答 5

0

您可以简单地使用一般方法来显示图像,如下所示。您不需要使用public/它,因为它是资产的默认路径。

<img src="/user_images/1531068734.jpg" height="40px" width="40px" alt="" class="pull-left img-circle login"> 
于 2018-09-12T14:32:18.250 回答
0

我想更详细地描述我的上述评论。Laravel 提供添加一个自定义属性,用作 db 表列。

请将以下代码添加到您的用户模型中;

.....

protected $appends = [
    'profile_photo',
];

/**
 * Get user profile photo
 *
 * @return string
 */
public function getProfilePhotoAttribute()
{
    $profile_photo = null;
    if($this->image_status == 'profile'){
        $profile_photo = public_path('user_images/' . $this->image));
    }
    return $profile_photo;
}

请将以下代码添加到您的导航区域;

<div class="login_area">
    @if (Auth::check())
        <img src="{{ auth()->user()->profile_photo }}" height="40px" width="40px" alt="" class="pull-left img-circle login"> 
        <a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();"><i class="fa fa-sign-in" aria-hidden="true"></i> Logout</a>
        <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
            <input type="hidden" name="_token" value="{{ csrf_token() }}">
        </form>
    @else 
        <a href="http://www.abc.in\login">Login</a>
        <a href="http://abc.in/register">Registration</a> 
    @endif
</div>

我认为这将解决您的问题。

于 2018-09-14T09:35:18.283 回答
0

您可以简单地使用View该类的share方法使变量(或任何值)可用于 laravel 中的所有视图。

有时,您可能需要与应用程序呈现的所有视图共享一条数据。您可以使用视图外观的 share 方法来执行此操作。通常,您应该在服务提供者的引导方法中调用共享。您可以随意将它们添加到 AppServiceProvider 或生成单独的服务提供者来容纳它们

在 AppServiceProvider 文件中,您将添加如下代码: View::share('key', 'value') 例如:

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        View::share('key', 'value');
    }

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

将“key”替换为您喜欢的内容,将“value”替换为用户图像路径。

解决方案 2:您也可以为此使用 ViewComposer: https ://laravel.com/docs/5.5/views#view-composers

于 2018-09-12T14:52:16.647 回答
0

使用

<img src="{{ auth()->user()->image }}" height="40px" 
     width="40px" alt="" class="pull-left img-circle login" />
于 2018-09-12T14:41:16.420 回答
0

您无需传递图像 url 即可从控制器查看。您可以在视图中打印图像路径。

我看到你的标签的 src 值有一个错误。您正在使用

资产('public/user_images/1531068734.jpg')

但是资产方法已经使用“公共”作为根文件夹。您应该删除“public”,所以它应该遵循;

// 如果图像路径仅存储为文件名;

资产('user_images/' . auth()->user()->needed_profile_image_column)

// 如果图像路径存储为带有文件名的完整路径;

资产(auth()->用户()->需要_profile_image_column)

你能试试我上面提到的吗?

于 2018-09-12T15:53:28.680 回答