Laravel - страницы профиля пользователя - PullRequest
0 голосов
/ 23 сентября 2019

В моем приложении есть таблица пользователей и таблица профилей.Когда пользователь заходит на свою панель мониторинга, он должен иметь возможность щелкнуть ссылку, чтобы просмотреть страницу своего профиля.Вот ссылка:

<a href="{{ route('profiles.show',$profiles->id)}}">link to your profile page</a>

Однако я получаю сообщение об ошибке: Маршрут [profiles.show] не определен.

I 'Я новичок и не совсем понимаю, как связать зарегистрированного пользователя со страницей его / ее профиля.У всех пользователей должна быть страница профиля при регистрации.

Буду признателен за руководство!Вот что у меня есть:


Ссылка на страницу профиля

<a href="{{ route('profiles.show',$profiles->id)}}">link to your profile page</a>

ProfilesController.php


namespace App\Http\Controllers;

use App\Profile;
use Illuminate\Http\Request;

class ProfilesController extends Controller
{
    public function show($id)
    {
        $profile = Profile::find($id);
        return view('profiles.show', compact('profile'));
    }
}

Profile.php


namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

routs / web.php

Route::get('pages/profiles', 'ProfilesController@show');

profiles.blade.php

Пока это просто очень простая страница.

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <h1>{{ $user->user_id }}</h1>

    <p>{{ $user->about_me }}</p>
</body>

</html>

Решение

Я нашел простое решение, и я хотел опубликовать его здесь, чтобы помочь другим, кто может бороться с созданием страницы профиля пользователя.Ниже предполагается, что у вас уже есть таблица пользователей в вашей базе данных, и теперь вы хотите создать таблицу профилей и подключить идентификатор пользователя к странице своего профиля.Добавление профилей пользователей Laravel

Это видео , которое мне помогает.

Создание таблицы

php artisan make:migration create_profiles_table 

Это создаетфайл миграции:

2019_09_22_213316_create_profiles_table

Открыть файл миграции и добавить дополнительные столбцы, которые вам нужны:

$table->integer('user_id')->unsigned()->nullable();
$table->string('about_me')->nullable();

Перенести их в базу данных

php artisan migrate

Теперь, когда наша база данных отсортирована, нам нужно создать контроллер для управления работой нашего php.

ProfilesController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfilesController extends Controller
{
    public function show($user_id)
    {
        $user = User::find(1);
        $user_profile = Profile::info($user_id)->first();
        return view('profiles.show', compact('profile', 'user'));
    }

    public function profile()
    {
        return $this->hasOne('Profile');
    }
}

routs / web.php

Route::get('dashboard/profile', 'ProfilesController@show');

Profile.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Profile extends Model
{
    public function user()
    {
        return $this->belongsTo('User');
    }
}

Добавить это в User.php

public function profile()
{
return $this->hasOne('Profile');
}

profile.blade.php

Создайте любой дизайн, который вы хотите.Если вы хотите ввести имя пользователя, включите {{ Auth::user()->name }}

Ответы [ 4 ]

0 голосов
/ 23 сентября 2019

В файле Blade:

<a href="{{ route('profiles.show',$profiles->id)}}">link to your profile page</a>

Изменить стиль маршрута, как показано ниже:

Route::get('pages/profiles/{id}', 'ProfilesController@show')->name('profiles.show');

В модели профиля

public function user()
{
    return $this->belongsTo(User::class);
}

В Profiles.blade.php

<body>
  <h1>{{ $profile->id }}</h1>

   <p>{{ $profile->about_me }}</p>
</body>

Вы пропустили информацию о пользователе через параметр "профиль".Поэтому вы должны записать это имя в блейд-файл.

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

0 голосов
/ 23 сентября 2019

попробуйте это

Route::get('pages/profiles/{id}', 'ProfilesController@show')->name('profiles.show');

Потому что в ссылке вы используете имя маршрута, но в файле web.php нет имени маршрута с именем profiles.show.

, так что вы увидите ошибку. И в маршруте вам нужноПередать удостоверение личности.

0 голосов
/ 23 сентября 2019

Проблема решена.Попробовав когда-нибудь комбинацию кода и многочасового прочтения руководств «как делать», я нашел этот замечательный учебник https://www.youtube.com/watch?v=yAVvOW64c0g, в котором очень просто объясняется, как создать профиль пользователя.Это сработало.Уф!

0 голосов
/ 23 сентября 2019

Ваш маршрут неправильный, посмотрите на именованные маршруты .Если вы не используете Route::resource(), вам придется вручную назвать свои маршруты и указать, когда вы ожидаете параметр (в данном случае идентификатор профиля).

Route::get('pages/profiles/{id}', 'ProfilesController@show')->name('profiles.show');
<a href="{{ route('profiles.show', $profile)}}">link to your profile page</a>

Привязка модели маршрута - это, вероятно, путь в этом случае.

Route::get('pages/profiles/{profile}', 'ProfilesController@show')->name('profiles.show');
namespace App\Http\Controllers;

use App\Profile;
use Illuminate\Http\Request;

class ProfilesController extends Controller
{
    public function show(Profile $profile)
    {
        return view('profiles.show', compact('profile'));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...