【问题标题】:Avatar for search bar搜索栏头像
【发布时间】:2018-12-02 11:14:00
【问题描述】:

我一直在尝试在我的搜索栏旁边添加一个小头像。但是,它没有显示。下面提供的是我的代码,请提供任何帮助。

Results.blade.php

@extends('layouts.app')

@section('content')
  <h3> Your search for "{{ Request::input('query') }}"</h3>

    @if (!$users->count())
      <p>No results found, sorry.</p>
    @else

      <div class="row">
        <div class="col-lg-12">
          @foreach ($users as $user)
              @include('user/partials/userblock')
          @endforeach
        </div>
      </div>
      @endif
    @stop

userblock.blade.php

<div class="media">
  <a class="pull-left" href="#">
    <img class="media-object" alt="{{ $user->getNameOrUsername() }}" src="
    {{ $user->getAvatarUrl() }}">
  </a>

  <div class="media-body">
    <h4 class="media-heading"><a href="#">{{ $user->getNameOrUsername() }}</a></h4>
    @if ($user->location)
      <p>{{ $user->location }}</p>
      @endif
  </div>
</div>

用户.php

<?php

namespace Kermode;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'first_name','last_name', 'email', 'password','gender',

    ];


    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    public function getName()
    {
      if ($this->first_name && $this->last_name) {
        return "{$this->first_name} {$this->last_name}";
      }
      if ($this->first_name) {
        return $this->first_name;
      }

      return null;
      }

    public function getNameOrUsername()
      {
        return $this->getName() ?: $this->username;
      }

      public function getFirstNameOrUsername()
      {
        return $this->first_name ?: $this->username;
      }

      public function getAvatarUrl()
        {
          return "https://www.gravatar.com/avatar/{{ md5($this->email) }}
          ?d=mm&s=40";
        }
}

SearchController.php

<?php

namespace Kermode\Http\Controllers;

use DB;
use Kermode\User;
use Illuminate\Http\Request;

class SearchController extends Controller
{
  public function getResults(Request $request)
  {
    $query = $request->input('query');

    if (!$query) {
      return redirect()->route('home');
    }

    $users = User::where(DB::raw("CONCAT(first_name,' ', last_name)"),
    'LIKE', "%$query%")
    ->orWhere('email', 'LIKE' , "%$query%")
    ->get();

    return view('search.results', compact('users'));
  }
}

感谢任何帮助。我是基于 Web 的应用程序的新手。xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx xxxxxxxx xxx

【问题讨论】:

    标签: php database laravel search


    【解决方案1】:

    在你的用户类中,尽量不要使用刀片。

        public function getAvatarUrl()
        {
          $md5Email = md5($this->email);
          return sprintf("https://www.gravatar.com/avatar/%s?d=mm&s=40", $md5Email); 
        }
    

    其他提示:

    • 在您的 PHP 实体类(例如您的情况中的用户)中,切勿使用 twig、blade 等第 3 方模板。让表示由应用程序的“视图”部分处理。当您想要切换模板引擎时,这可能会让您受益。

    【讨论】:

    • 另一种可能性是在你的 User 类中有 getEmail,在你的刀片 userblock.blade.php 中你可以有src=https://www.gravatar.com/avatar/{{ md5($user-&gt;getEmail()}}?d=mm&amp;s=40
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多