Pulling data into a select option in laravel - php

I am trying to pull data from a different table into a select tag where the user can choose which program a certain course belongs to. I am getting an error of syntax error, unexpected '}', expecting ')' (View: C:\xampp\htdocs\IRMS\resources\views\courses\create.blade.php). How can I achieve this so that when I click on the Add Course button, it will give me the form iI can select the program code from.?
My code below:
index.blade
#extends('layouts.app')
#section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<p>Go Back</p>
<div class="card">
<div class="card-header">Courses</div>
<div class="card-body">
#if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
#endif
<p>Add Course</p>
#if (count($courses)> 0 )
<table class="table table-striped">
<tr>
<th></th>
<th>Program Code</th>
<th>Course Code</th>
<th>Course Name</th>
<th></th>
<th></th>
</tr>
#foreach ($courses as $course)
<tr>
<td></td>
<td>{{$course->program_code}}</td>
<td>{{$course->course_code}}</td>
<td>{{$course->course_name}}</td>
<td>Edit</td>
<td>Delete</td>
</tr>
#endforeach
</table>
#else
<p>No Courses found!</p>
#endif
</div>
</div>
</div>
</div>
</div>
#include('inc.sadmin-navbar')
#endsection
create blade
#extends('layouts.app')
#section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<p>Go Back</p>
<div class="card">
<div class="card-header">Add New Course</div>
<div class="card-body">
#if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
#endif
{!! Form::open(['action'=>'CoursesController#store', 'method'=>'POST']) !!}
<div class="form-group row justify-content-center">
{{Form::label('program_name', 'Program Name')}}
<div class="col-md-4">
#foreach ($programs as $program)
{{Form::select('{{$program->id}}', ['{{$program->program_code}}'], null, ['placeholder' => 'Pick Program'])}}
#endforeach
</div>
</div>
<div class="form-group row justify-content-center">
{{Form::submit('Add Program', ['class'=>'btn btn-success'])}}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
#include('inc.sadmin-navbar')
#endsection
courses controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Course;
use App\Program;
class CoursesController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
$courses = Course::all();
return view('courses.index')->with('courses', $courses);
}
/**
* Show the form for creating a new resource.
*
* #return \Illuminate\Http\Response
*/
public function create()
{
$programs = Program::all();
return view('courses.create')->with('programs', $programs);
}
/**
* 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($id)
{
//
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
programs controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Program;
// use App\CSE;
class ProgramsController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
$programs = Program::all();
return view('programs.index')->with('programs', $programs);
}
/**
* Show the form for creating a new resource.
*
* #return \Illuminate\Http\Response
*/
public function create()
{
return view('programs.create');
}
/**
* Store a newly created resource in storage.
*
* #param \Illuminate\Http\Request $request
* #return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'program_name' => 'required',
'program_code' => 'required'
]);
$program = new Program;
$program->program_name = $request->input('program_name');
$program->program_code = $request->input('program_code');
$program->save();
return redirect('home/programs');
}
/**
* Display the specified resource.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function show($id)
{
$program = Program::find($id);
// $courses = CSE::all();
return view('programs.software.index')->with('program', $program);
}
/**
* Show the form for editing the specified resource.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function edit($id)
{
$program = Program::find($id);
return view('programs.edit')->with('program', $program);
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request, [
'program_name' => 'required',
'program_code' => 'required'
]);
$program = Program::find($id);
$program->program_name = $request->input('program_name');
$program->program_code = $request->input('program_code');
$program->save();
return redirect('home/programs');
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
$program = Program::find($id);
$program->delete();
return redirect('home/programs');
}
}

You don't have to use {{}} inside php form::select .
Try replacing the following lines .
#foreach ($programs as $program)
{{Form::select('{{$program->id}}', ['{{$program->program_code}}'], null, ['placeholder' => 'Pick Program'])}}
#endforeach
With this one : :
#foreach ($programs as $program)
{{Form::select($program->id, [$program->program_code], null, ['placeholder' => 'Pick Program'])}}
#endforeach
Try this and let me know, if you have any issues.

You can try this also
$programs = Program::all();
$select = [];
foreach($programs as $program){
$select[$program->id] = $program->program_code;
}
return view('programs.index', compact(['programs','select'));
{!! Form::select('program', $select, null, ['class'=>'form-control']) !!}
or
#foreach ($programs as $program)
{{Form::select($program->id, [$program->program_code], null, ['placeholder'=>'Pick Program'])}}
#endforeach

remove {{ }} in your code:
{{Form::select('{{$program->id}}', ['{{$program->program_code}}'], null, ['placeholder' => 'Pick Program'])}}
it just is:
$list_program is an array contain [program_id => program_code]
{!! Form::select('program_id', $list_program, null, ['placeholder' => 'Pick Program'])!!}

Related

Trying to get property 'id' of non-object (View: /home/alex/Desktop/laravel/cms/resources/views/posts/index.blade.php)

i found out that these 2 lines cause the problem, but i don't know how to rewrite them to proceed
<a href="{{ route('categories.edit', $post->category->id ) }}">
{{ $post->category->name }}
</a>
Here is my posts/index.blade.php
#extends('layouts.app')
#section('content')
<div class="d-flex justify-content-end mb-2">
Add Post
</div>
<div class="card card-default">
<div class="card-header">Posts</div>
<div class="card-body">
#if ($posts->count()>0)
<table class="table">
<thead>
<th>Image</th>
<th>Title</th>
<th>Category</th>
<th></th>
<th></th>
<tbody>
#foreach($posts as $post)
<tr>
<td>
<img src="{{ asset('storage/'.$post->image) }}" width="120px" height="60px" alt="">
</td>
<td>
{{ $post->title }}
</td>
<td>
<a href="{{ route('categories.edit', $post->category->id ) }}">
{{ $post->category->name }}
</a>
</td>
#if($post->trashed())
<td>
<form action="{{ route('restore-posts', ['post' => $post['id']]) }}" method="POST">
#csrf
#method('PUT')
<button type="submit" class="btn btn-info btn-sm">Restore</button>
</form>
</td>
#else
<td>
Edit
</td>
#endif
<td>
<form action="{{ route('posts.destroy', ['post' => $post['id']]) }}" method="POST">
#csrf
#method('DELETE')
<button type="submit" class="btn btn-danger btn-sm">
{{ $post->trashed() ? 'Delete' : 'Trash' }}
</button>
</form>
</td>
</tr>
#endforeach
</tbody>
</thead>
</table>
#else
<h3 class="text-center">
No Posts Yet
</h3>
#endif
</div>
</div>
#endsection
and here is my controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\Posts\CreatePostRequest;
use App\Post;
use App\Category;
// use Illuminate\Support\Facades\Storage;
use App\Http\Requests\Posts\UpdatePostRequest;
class PostsController extends Controller
{
public function __construct(){
$this->middleware('verifyCategoriesCount')->only(['create','store']);
}
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
return view('posts.index')->with('posts', Post::all());
}
/**
* Show the form for creating a new resource.
*
* #return \Illuminate\Http\Response
*/
public function create()
{
return view('posts.create')->with('categories', Category::all());
}
/**
* Store a newly created resource in storage.
*
* #param \Illuminate\Http\Request $request
* #return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$image = $request->image->store('posts');
Post::create([
'title' => $request->title,
'description' => $request->description,
'content' => $request->content,
'image' => $image,
'published_at' => $request->published_at,
'category_id' => $request->category
]);
session()->flash('success', 'Post created succesfully.');
return redirect(route('posts.index'));
}
/**
* 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(Post $post)
{
return view('posts.create')->with('post', $post)->with('categories', Category::all());
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(UpdatePostRequest $request, Post $post)
{
$data = $request->only(['title', 'description', 'published_at', 'content']);
// check if new image
if($request->hasFile('image')){
// upload it
$image = $request->image->store('posts');
// delete old one
$post->deleteImage();
$data['image'] = $image;
}
// update attributes
$post->update($data);
// falsh message
session()->flash('success', 'Post updated succesfully');
// redirect user
return redirect(route('posts.index'));
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
$post = Post::withTrashed()->where('id', $id)->firstOrFail();
if($post->trashed()){
$post->deleteImage();
$post->forceDelete();
}else{
$post->delete();
}
session()->flash('success', 'Post deleted succesfully.');
return redirect(route('posts.index'));
}
/**
* Display a list of all trashed posts
*
* #return \Illuminate\Http\Response
*/
public function trashed(){
$trashed = Post::onlyTrashed()->get();
return view('posts.index')->withPosts($trashed);
}
public function restore($id){
$post = Post::withTrashed()->where('id', $id)->firstOrFail();
$post->restore();
session()->flash('success', 'Post restored succesfully');
return redirect()->back();
}
}
Your $post->category is not an object which is why this error is coming.
Try
dd($post->category)
and you'll see what's in it. That will help you to debug the real problem.
First eager load the relation (to prevent N+1 issues) using:
public function index()
{
$posts = Post::with('category')->get();
return view('posts.index')->with('posts', $posts);
}
Then if you still get the error, it might be due to the fact that the post you are trying to view does not have category, so the relation is null. So when you try to get the category id, it throws that exception that null does not have id.
You can simply solve it by checking if there is any category before:
#if($post->category)
<a href="{{ route('categories.edit', $post->category->id ) }}">
{{ $post->category->name }}
</a>
#endif
Use eager loading in your controller before injecting the model to the view.
$post->load('category');
Make sure that each post has a relation with a category.

Update() function in the Laravel Resource Controller is not working

So I'm trying to use the update() function to update the selected user but when I click submit, it just goes back to index (as it should) but updates nothing. Following is my code:
StudentController (Resource Controller):
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Student;
class StudentController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
$students = Student::all();
return view ('main',compact('students'));
}
/**
* Show the form for creating a new resource.
*
* #return \Illuminate\Http\Response
*/
public function create()
{
return view ('create');
}
/**
* Store a newly created resource in storage.
*
* #param \Illuminate\Http\Request $request
* #return \Illuminate\Http\Response
*/
public function store(Request $request)
{
Student::create($request->all());
return redirect()->route('main.index')->with('create','Student has been added successfully!');
}
/**
* 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($id, Student $student)
{
$student = Student::findOrFail($id);
return view ('edit',compact('student'));
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(Request $request, Student $student)
{
$student->update($request->all());
return redirect()->route('main.index')->with('update','Student has been updated!');
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Main.blade.php (Index):
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="py-4">
#if (Session::has('create'))
<div class="alert alert-info">
{{ Session::get('create') }}
</div>
#endif
#if (Session::has('update'))
<div class="alert alert-info">
{{ Session::get('update') }}
</div>
#endif
<div class="card">
<div class="card-header">
Students
{{ link_to_route('main.create','Add Student','',['class'=>'btn btn-success float-right']) }}
</div>
<div class="card-body">
<table id="myTable" class="table table-striped table-bordered">
<thead>
<tr>
<th>Student Name</th>
<th>Gender</th>
<th>Address</th>
<th>Class</th>
<th>Action</th>
</tr>
</thead>
<tbody>
#foreach($students as $student)
<tr>
<td>{{ $student->name }}</td>
<td>{{ $student->gender }}</td>
<td>{{ $student->address }}</td>
<td>{{ $student->class }}</td>
<td>{{ link_to_route('main.edit','Edit',[$student->id],['class'=> 'btn btn-primary btn-sm']) }}</td>
</tr>
#endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
edit.blade.php (Model):
{!! Form::model($student,array('route'=>['main.update',$student->id],'method'=>'PUT')) !!}
<div class="form-group">
{!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Add Student Name']) !!}
</div>
<div class="form-group">
{!! Form::select('gender', [
'Male' => 'Male',
'Female' => 'Female'],
null, ['class'=>'custom-select','placeholder' => 'Choose Gender']); !!}
</div>
<div class="form-group">
{!! Form::text('address',null,['class'=>'form-control','placeholder'=>'Add Student Address']) !!}
</div>
<div class="form-group">
{!! Form::select('class', [
'A' => 'A',
'B' => 'B',
'C' => 'C',
'D' => 'D',],
null, ['class'=>'custom-select','placeholder' => 'Choose Class']); !!}
</div>
<div class="form-group py-4">
{!! Form::submit('Edit',['type'=>'submit','class'=>'btn btn-danger btn-block']) !!}
</div>
{!! Form::close() !!}
Student.php (Model):
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Student extends Model
{
protected $fillable = ['name','gender','address','class'];
}
My create.blade.php is exactly the same as my edit.blade.php, the only changes are in the Form::open() line. And the edit page even displays my old data on the input fields but when I make a change & click Update, it just doesn't update anything in the database or the index page - so what am I doing wrong? Thanks in advance and please feel free to ask if any more code is required for you guys to crack this one.
Try this one out:
public function update(Request $request, Student $student)
{
$input = $request->all();
$student->fill($input)->save();
return redirect()->route('main.index')->with('update','Student has been updated!');
}
Try..
public function update(Request $request,$id)
{
$student = Student::find($id);
$student->name = $request->input('name');
$student->gender = $request->input('gender');
$student->address = $request->input('address');
$student->class = $request->input('class');
$student->save();
return redirect()->route('main.index')->with('update','Student has been updated!');
}
request()->all() contains method and token information. Can you maybe pass it through a validator?
$validated = request()->validate([
'name' => 'required',
'address' => '',
..
]);
$student->update($validated);
In your edit.blade.php,
{!! Form::submit('route_to_update()',['type'=>'submit','class'=>'btn btn-danger btn-block']) !!}
change "Edit"
And you can check your route by in your console like "php artisan route:list"
and check your route is reached
by var_damp() or var_export() or dd()in your student controller update function

Unable to fetch and update DB columns in Laravel (using Resource Controller & Collective Forms)

Here's a little context to what I'm trying to do: I'm trying to make a Profile System where the user registers and is redirected to a Display Page, where all the User info like his name, email etc. are meant to be displayed. Since the registration form only has 2 fields (name / email) - the user has to update his other info like his gender/facebook ID/twitter ID etc etc. So I've an Edit button which takes the user to a form. Now on that form, I want his already-existing Name/Email to show up, while the other fields like Gender/FB/Twitter/Description are empty - once he fills those fields and presses Update, I want him to go back to Display Page and then be shown all this updated/new information i.e Gender/Name/Email/Twitter/Description. Following is my code so far:
ProfileController.php (Resource Controller):
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\CustomUser;
class ProfileController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
$customusers = CustomUser::get()->first();
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 $customuser)
{
return view ('edit',compact('customuser'));
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(Request $request, CustomUser $customuser)
{
$customuser->update($request->all());
return redirect()->route('display.index')->with('creation','Profile has been updated successfully!');
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
CustomUser.php (Model):
<?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',
];
}
Display.blade.php (Main Page):
#extends('layouts.app')
#section('content')
<div style="margin-top: 5.2%;" class="container">
<div class="row">
<div class="col-lg-12">
#if (Session::has('creation'))
<div class="alert alert-info">
{{ Session::get('creation') }}
</div>
#endif
{{ link_to_route('display.edit','Edit',[$customusers->id],['class'=>'btn btn-success']) }}
{{$customusers->name}}
{{$customusers->email}}
{{$customusers->message}}
{{$customusers->facebook}}
{{$customusers->twitter}}
</div>
</div>
</div>
#endsection
And finally, this is my Edit.blade.php:
#extends('layouts.app')
#section('content')
<body style="height: 105.6vh;">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header" style="color: #fff; background-color: #113;font-family: 'Nunito',sans-serif; text-transform: uppercase;letter-spacing: 2px;
font-weight: bold;">
Edit Profile
</div>
<div class="card-body">
{!! Form::model($customuser,array('route'=>['display.update',$customuser->id],'method'=>'PUT')) !!}
<div class="form-group">
{!! Form::text('name',null,['class'=>'form-control','placeholder'=>'Username']) !!}
</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('Edit',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
</div>
</body>
#endsection
Now, when I click Edit and go to Edit.blade.php - all the fields are blank, when two of them (Name / Email) should have pre-filled blanks of what the user's credentials are, but that isn't the case - they are blank. And when I fill all the fields and press Update, it gives me "The PUT method is not supported for this route. What am I doing wrong here? I've been squabbling through the Internet for over 2 hours and I'm unable to find what I'm doing wrong here. Let me know there are any further info required for you to crack this problem of mine..

Laravel: Page links doesn't works in second time

After 'php artisan serve' command, the page like 'localhost:8000/biodata' opens and when I click on some link to go to the other page, the current page keeps on loading all the time without giving me any error. When I tried to change the server ports like'localhost:8080/biodata' and then click on the link immediately, the next page opens but the links on the next page doesn't work and the page keeps on loading until I again change the server ports.
I'm practicing with this online version of code from any other link. Here is the code.
index.blade.php:
#extends('layouts.app')
#section('content')
<div class="container">
<div class="row">
<div class="col-md-10">
<h3>List Biodata Siswa</h3>
</div>
<div class="col-sm-2">
<a class="btn btn-sm btn-success" href="{{ route('biodata.create') }}">Create New Biodata</a>
</div>
</div>
#if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{$message}}</p>
</div>
#endif
<table class="table table-hover table-sm">
<tr>
<th width = "50px"><b>No.</b></th>
<th width = "300px">Name</th>
<th>Location</th>
<th width = "180px">Action</th>
</tr>
#foreach ($biodatas as $biodata)
<tr>
<td><b>{{++$i}}.</b></td>
<td>{{$biodata->name}}</td>
<td>{{$biodata->location}}</td>
<td>
<form action="{{ route('biodata.destroy', $biodata->id) }}" method="post">
<a class="btn btn-sm btn-success" href="{{route('biodata.show',$biodata->id)}}">Show</a>
<a class="btn btn-sm btn-warning" href="{{route('biodata.edit',$biodata->id)}}">Edit</a>
#csrf
#method('DELETE')
<button type="submit" class="btn btn-sm btn-danger">Delete</button>
</form>
</td>
</tr>
#endforeach
</table>
{!! $biodatas->links() !!}
</div>
#endsection
web.php:
<?php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController#index')->name('home');
route::resource('biodata','BiodataController');
BiodataController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Biodata;
class BiodataController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
public function index()
{
$biodatas=Biodata::latest()->paginate(5);
return view('biodata.index',compact('biodatas'))
->with('i',(request()->input('page',1)-1)*5);
}
/**
* Show the form for creating a new resource.
*
* #return \Illuminate\Http\Response
*/
public function create()
{
return view('biodata.create');
}
/**
* Store a newly created resource in storage.
*
* #param \Illuminate\Http\Request $request
* #return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name'=>'required',
'location'=>'required'
]);
Biodata::create($request->all());
return redirect()->route('biodata.index')
->with('success','new biodata created successfully');
}
/**
* Display the specified resource.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function show($id)
{
$biodata = Biodata::find($id);
return view('biodata.detail', compact('biodata'));
}
/**
* Show the form for editing the specified resource.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function edit($id)
{
$biodata = Biodata::find($id);
return view('biodata.edit', compact('biodata'));
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param int $id
* #return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'location' => 'required'
]);
$biodata = Biodata::find($id);
$biodata->name = $request->get('name');
$biodata->location = $request->get('location');
$biodata->save();
return redirect()->route('biodata.index')
->with('success', 'Biodata siswa updated successfully');
}
/**
* Remove the specified resource from storage.
*
* #param int $id
* #return \Illuminate\Http\Response
*/
public function destroy($id)
{
$biodata = Biodata::find($id);
$biodata->delete();
return redirect()->route('biodata.index')
->with('success', 'Biodata siswa deleted successfully');
}
}
No error messages but the page keeps on loading.
There is typo error in your web.php file. The last line is
route::resource('biodata','BiodataController');
It should be
Route::resource('biodata','BiodataController');

Get the name of authenticated user and store it

I have a form in which you submit a "project". One of the field is "created by", but the user does not update this, it gets the name of the authenticated user in that moment and inserts it into the db.
I know how to retrieve the user's name, but the problem is that when I login with another user, then all the name change, because I store the name each time.
This is my project controller
<?php
namespace App\Http\Controllers;
use App\Project;
use App\Client;
use Auth;
use Illuminate\Http\Request;
class ProjectController extends Controller
{
/**
* Display a listing of the resource.
*
* #return \Illuminate\Http\Response
*/
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 \Illuminate\Http\Response
*/
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 \Illuminate\Http\Request $request
* #return \Illuminate\Http\Response
*/
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 \App\Project $project
* #return \Illuminate\Http\Response
*/
public function show(Project $project)
{
//
}
/**
* Show the form for editing the specified resource.
*
* #param \App\Project $project
* #return \Illuminate\Http\Response
*/
public function edit(Project $project)
{
return view('projects.edit', compact('project'));
}
/**
* Update the specified resource in storage.
*
* #param \Illuminate\Http\Request $request
* #param \App\Project $project
* #return \Illuminate\Http\Response
*/
public function update(Request $r, Project $project)
{
$project->update($r->all());
return redirect('/projects')->with('update','');
}
/**
* Remove the specified resource from storage.
*
* #param \App\Project $project
* #return \Illuminate\Http\Response
*/
public function destroy(Project $project)
{
$project->delete();
return redirect('/projects')->with('delete','');
}
}
And this is my index
#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
I think your problem is that you are using:
{{ $project->Auth::user()->name }}
instead of
{{ $project->created_by }}

Categories