Я пытался обойти эту ошибку уже почти 2 дня. Само собой разумеется, я все еще довольно новичок в Laravel. Я использую регистрационную форму Laravel (с некоторыми изменениями) и храню эти данные пользователя в таблице под названием "customusers" в моей базе данных. Эти данные включают их имя / адрес электронной почты / пол / описание и т. Д. И я пытаюсь использовать контроллер ресурсов для печати и редактирования этих данных. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь отобразить данные на моей главной странице, выдается ошибка «Свойство [идентификатор] не существует в этом экземпляре коллекции» или адрес электронной почты / имя. Но когда я отображаю данные с помощью Auth :: user () -> id, это работает. И это нормально, это выполнимо, если бы я только хотел отобразить данные. Но я также хочу редактировать эти данные, и мне придется использовать мою модель для этого. Вот мой код:
Display.blade.php:
<div id="wrapper">
<div id="content">
<div id="card">
<div id="front">
<div id="top-pic"></div>
<div id="avatar"><span style="position: absolute;padding-top: 17px;margin-left: 34px;color: #fff;font-size: 64px;" class="h5">
{{ Auth::user()->name[0] }}
</span></div>
<div id="info-box">
<div class="info">
<h1>{{ Auth::user()->name }}</h1>
<h2>{{ Auth::user()->message }}</h2>
</div>
</div>
<div id="social-bar">
<a href="{{ Auth::user()->facebook }}" target="_blank">
<i class="fa fa-facebook"></i>
</a>
<a href="{{ Auth::user()->twitter }}" target="_blank">
<i class="fa fa-twitter"></i>
</a>
{{ link_to_route('display.edit','',[$customusers->id],['class'=>'fa fa-edit']) }}
</div>
</div>
Edit.blade.php:
{!! Form::model($customusers,array('route'=>['display.store',$customusers->id],'method'=>'PUT')) !!}
<div class="form-group">
{!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Name']) !!}
</div>
<div class="form-group">
{!! Form::email('email',null,['class'=>'form-control','placeholder'=>'Email']) !!}
</div>
<div class="form-group form-row">
<div class="col-5">
{!! Form::select('gender', ['Male' => 'Male', 'Female' => 'Female'], null, ['class'=>'form-control','placeholder'=>'Choose Gender']); !!}
</div>
<div class="col">
{!! Form::text('facebook',null,['class'=>'form-control','placeholder'=>'Facebook ID']) !!}
</div>
<div class="col">
{!! Form::text('twitter',null,['class'=>'form-control','placeholder'=>'Twitter Handle']) !!}
</div>
</div>
<div class="form-group">
{!! Form::textarea('message',null,['class'=>'form-control','placeholder'=>'Talk about yourself']) !!}
</div>
<div class="form-group">
{!! Form::button('Create',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
</div>
{!! Form::close() !!}
ProfileController.php :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\CustomUser;
use Illuminate\Support\Facades\DB;
class ProfileController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$customusers = CustomUser::all();
return view ('display',compact('customusers'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(CustomUser $customusers)
{
return view ('edit',compact('customusers'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, CustomUser $customusers)
{
$customusers->update($request->all());
return redirect()->route('display.index');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
CustomUser.php (модель):
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class CustomUser extends Authenticatable
{
use Notifiable;
protected $table = 'customusers';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name','username','email','gender','password','message','twitter','facebook',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
Web. php (Routes):
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::resource('/display','ProfileController');
Итак, как вы можете видеть, я использую функцию compact in index () для подачи всех пользовательских данных в мою базу данных, и когда я dd ($customusers) - он показывает мне данные в массиве. Но когда я использую {{$ customusers-> name}} - это выдает ошибку, говорящую «Свойство [имя] не существует в этом экземпляре коллекции». И поэтому, то же самое происходит, когда я пытаюсь использовать link_to_route('display.edit','',[$customusers->id],'')
для перенаправления пользователя на страницу редактирования. Пожалуйста, помогите мне увидеть, что я делаю не так здесь. Ранее я сделал приложение CRUD, и я в основном делал то же самое, и все это прекрасно работало. Так что я не понимаю, в чем здесь проблема ..