#php #laravel
#php #laravel
Вопрос:
У меня есть форма, в которой вы отправляете «проект». Одно из полей «создано», но пользователь не обновляет это, он получает имя аутентифицированного пользователя в этот момент и вставляет его в БД.
Я знаю, как получить имя пользователя, но проблема в том, что когда я вхожу в систему с другим пользователем, все имя меняется, потому что я сохраняю имя каждый раз. Это мой контроллер проекта
<?php
namespace AppHttpControllers;
use AppProject;
use AppClient;
use Auth;
use IlluminateHttpRequest;
class ProjectController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('projects.index', [
'project' => Project::all()
]);
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
if (Auth::user()->role != 1){
return redirect()->back();
}else{
return view('projects.create',[
'project' => new Project,
'client' => new Client
]);
}
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $r)
{
$validatedData = $r->validate([
'proj_title' => 'required|max:100',
'client_id' => 'required',
'proj_desc' => 'required',
]);
$currentUser = Auth::user()->name;
$r['created_by'] = $currentUser;
$project = Project::create($r->all());
return redirect('/projects')->with('store','');
}
/**
* Display the specified resource.
*
* @param AppProject $project
* @return IlluminateHttpResponse
*/
public function show(Project $project)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param AppProject $project
* @return IlluminateHttpResponse
*/
public function edit(Project $project)
{
return view('projects.edit', compact('project'));
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param AppProject $project
* @return IlluminateHttpResponse
*/
public function update(Request $r, Project $project)
{
$project->update($r->all());
return redirect('/projects')->with('update','');
}
/**
* Remove the specified resource from storage.
*
* @param AppProject $project
* @return IlluminateHttpResponse
*/
public function destroy(Project $project)
{
$project->delete();
return redirect('/projects')->with('delete','');
}
}
И это мой индекс
@section('content')
<div class="row">
<div class="col">
@if (Auth::user()->role == 1)
<a class="btn btn-success" href="/projects/create">Add Project</a>
@endif
</div>
<div class="col"></div>
<div class="col">
@if(session()->has('store'))
<div class="alert alert-success mt-2" role="alert">
<strong>Project created</strong>
</div>
@elseif(session()->has('update'))
<div class="alert alert-success mt-2" role="alert">
<strong>Project updated</strong>
</div>
@elseif(session()->has('delete'))
<div class="alert alert-success mt-2" role="alert">
<strong>Project deleted</strong>
</div>
@endif
</div>
</div>
<br>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Project Id</th>
<th>Title</th>
<th>Description</th>
<th>Client Id</th>
<th>Created by</th>
<th>Created on</th>
@if (Auth::user()->role==1)
<th>Admin</th>
@endif
</tr>
</thead>
<tbody class="">
@foreach ($project as $project)
<tr>
<td>{{$project->proj_id}}</td>
<td>{{$project->proj_title}}</td>
<td>{{$project->proj_desc}}</td>
<td>{{$project->client_id}}</td>
<td>{{$project->Auth::user()->name}}</td>
<td>{{$project->created_at}}</td>
@if (Auth::user()->role==1)
<td>
<div class="dropdown">
<button class="btn btn-danger dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="{{route('projects.edit',$project)}}">Edit</a>
<form method="POST" action="{{route('projects.destroy',$project)}}" onsubmit="return confirm('Are you sure you want to delete this?')">
@method('DELETE')
@csrf
<button class="dropdown-item" type="submit">Delete</button>
</form>
</div>
</div>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
@endsection
Комментарии:
1. Вы пробовали что-нибудь, прежде чем публиковать этот вопрос? Без какого-либо поиска и разработки вы не должны задавать здесь вопросы.
2. Почему это имя? Почему бы и нет
id
?3. Как я уже сказал, я попытался сохранить имя текущего пользователя в переменной и вставить его. Но моя проблема в том, что тогда оно меняется, когда другой пользователь входит в систему. Да, я провел исследование по этому поводу
4. @kerbholz Потому что я думаю, что лучше видеть имя кого-то, чем идентификатор, который, вероятно, вы не знаете, кто это
5. Я с вами, но (для отношений) вы обычно сохраняете
id
в своей базе данных и отображаете имя, когда это необходимо. Поэтому, когда кто-то меняет свое имя, отношение остается прежним.
Ответ №1:
Я думаю, ваша проблема в том, что вы используете:
{{ $project->Auth::user()->name }}
вместо
{{ $project->created_by }}