Как отобразить изображение пользователя на панели навигации, которая является частью главной страницы в laravel?

Я хочу отображать изображение пользователя в строке меню, которая является частью главной страницы. master.blade.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');
}
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
1 208
5

Ответы 5

Вы можете просто использовать общий метод для отображения изображения, как показано ниже. Вам не нужно использовать public/, так как это путь по умолчанию для активов.

<img src = "/user_images/1531068734.jpg" height = "40px" width = "40px" alt = "" class = "pull-left img-circle login"> 

мой вопрос в том, как передать URL-адрес изображения от контроллера к просмотру главной страницы. потому что нет маршрута для главной страницы.

Kapil Dev 12.09.2018 16:36

Вы можете просто получить изображение профиля с Auth::user(), я полагаю, у вас есть связь между пользователем и изображением профиля.

suzan 12.09.2018 16:38

С симпатией используя

<img src = "{{ auth()->user()->image }}" height = "40px" 
     width = "40px" alt = "" class = "pull-left img-circle login" />

как я могу это сделать, используя построение запросов? поскольку у пользователя много изображений, мне нужно отображать только изображение профиля

Kapil Dev 12.09.2018 16:57

Вы можете просто использовать метод View класса share, чтобы сделать переменную (или любое значение) доступной для всех представлений в laravel.

Occasionally, you may need to share a piece of data with all views that are rendered by your application. You may do so using the view facade's share method. Typically, you should place calls to share within a service provider's boot method. You are free to add them to the AppServiceProvider or generate a separate service provider to house them

Внутри файла 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()
    {
        //
    }
}

Замените «ключ» на то, что вам нравится, а «значение» - на путь к пользовательскому изображению.

Решение 2: Вы также можете использовать ViewComposer для этого: https://laravel.com/docs/5.5/views#view-composers

Вам не нужно передавать URL-адрес изображения для просмотра с контроллера. Вы можете распечатать путь изображения в поле зрения.

Я увидел ошибку в вашем src-значении тега. Вы используете как

asset('public/user_images/1531068734.jpg')

но метод ресурсов уже использует "общедоступную" в качестве корневой папки. Вы должны удалить "public", так что оно должно соответствовать;

// If image path stored as only file name;

asset('user_images/' . auth()->user()->needed_profile_image_column)

// If image path stored as full path with file name;

asset(auth()->user()->needed_profile_image_column)

Не могли бы вы попробовать то, что я упомянул выше?

у каждого пользователя есть несколько изображений, мне нужно отображать только изображение профиля (image_status == 'profile'). как использовать условие where с этим отношением. auth () -> user () -> required_profile_image_column

Kapil Dev 13.09.2018 11:43

Вы можете настроить атрибут в своей модели. Вы можете установить любое изображение для этого настраиваемого атрибута. Проверьте атрибут модели laravel в документации laravel.

FGDeveloper 13.09.2018 11:48

Я хочу отображать только изображение профиля, загруженное этим пользователем. как мы видим на панели навигации facebook

Kapil Dev 13.09.2018 11:52

Я хочу более подробно описать свой комментарий. 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>

Думаю, это решит вашу проблему.

я пробовал, но не получилось. теперь я обновил свою модель изображения. пожалуйста, проверь это

Kapil Dev 19.09.2018 07:52

{{auth () -> пользователь () -> профиль () -> изображение () -> profile_photo}}

Kapil Dev 19.09.2018 08:35

Другие вопросы по теме