Undefined variable Issue with laravel blade - php

In my laravel application, I'm having a list of regions in my DB
This is my controller method
public function index()
{
$region_options = Region::get();
return view('home',compact('region_options'));
}
and I have following in my blade,
#if(!$region_options->isEmpty())
<ol class="region-pop">
#foreach ($region_options as $key => $region)
<li>{{ $region->name }}</li>
#endforeach
</ol>
#endif
But when I run this it gave me an error saying, Undefined variable: region_options
I'm struggling to find what the issue is...

Related

I can't get announcements related to that particular category

I'm trying to get announcements related to that selected category.
This is my code.
View:
#foreach ($categories as $category)
<a class="nav-link" href="{{ route('public.announcements.category', [$category->id]) }}">{{ $category->name }}</a>
#endforeach
Controller:
public function announcementsByCategory($category_id)
{
$category = Category::find($category_id);
$announcements = $category->announcements()->orderBy('created_at','desc')->paginate(5);
return view('announcements', compact('category', 'announcements'));
}
}
Route:
Route::get('/category/{id}/announcements', [PublicController::class,'announcementsByCategory'])->name('public.announcements.category');
I am getting the following error on $announcements:
Call to a member function announcements() on null
Can anyone kindly tell me why I get this error?
I started learning Laravel recently.

Pass data to view in Laravel

I am new to Laravel I just want to pass variable to view but every time I have got Undefined variable: companies error
this is my Controller:
public function index()
{
$companies = Company::all();
return view(
'companies.index', [
'companies' => $companies
]);
}
and this is my view:
<ul class="list-group">
#foreach($companies as $company)
<li class="list-group-item">{{ $company->name }}</li>
#endforeach
</ul>
I use Laravel version 5.5
Make sure in your route file on routes/web.php you have a route to the index function like so:
Route::get('urlToYourView', 'YourController#index');

display live json data on laravel blade

i have live json and i want to display it on laravel blade
my controller code is :
public function index()
{
$json = json_decode(file_get_contents('link_of_json_file'),true);
return view('show' , compact('json'));
}
and blade code is :
#foreach ($json as $p)
{{ $p->name }}
#endforeach
and this erros is display:
(2/2) ErrorException
Trying to get property of non-object (View:
E:\work-landingpage\test\JSON\resources\views\show.blade.php)
you can remove the "true" to use it as object :
public function index()
{
$json = json_decode(file_get_contents('link_of_json_file'));
return view('show' , compact('json'));
}
#foreach ($json as $p)
{{ $p->name}}
#endforeach
so if you want to use it as array you can use it like:
#foreach ($json as $p)
{{ $p['name']}}
#endforeach

How to retrieve data from multiple tables in Laravel 5.4

I have two tables and i would like to retrieve data from them and pass it to my table.
For this I've created 2 models with an one to one relationship:
[Adress]
class Adress extends Model
{
public function KontoKorrent()
{
return $this->hasOne(KontoKorrent::class, 'Adresse');
}
}
[KontoKorrent]
class KontoKorrent extends Model
{
public function Adresse()
{
return $this->belongsTo(Adress::class,'Adresse');
}
}
My controller look like this:
class AdressesController extends Controller
{
public function index()
{
$adresses = Adress::with('KontoKorrent')->paginate(2);
return view('welcome', compact('adresses'));
}
}
When I use tinker
App\Adress::
Every adress has relation to the kontokorrent. This is working.
App\Adress {#698
Adresse: "3030",
Anrede: "Company",
Name1: "A Company Name",
LieferStrasse: "Dummystreet",
KontoKorrent: App\KontoKorrent {#704
Location: "1",
Adresse: "3030",
Kto: "S0043722",
In my view:
<ul>
#foreach($adresses as $adress)
<li>{{ $adress->Name1 }}</li> //this is working
<li>{{ $adress->KontoKorrent->Kto }}</li> //this is NOT working
#endforeach
</ul>
{{ $adresses->links() }}
The relation is showing me an error:
Trying to get property of non-object
What I'm doing wrong ?
The error that you are getting:
Trying to get property of non-object
Is related to some Adress model that doesn't have a KontoKorrent, then your $adress->KontoKorrent returns null, and null isn't a object, that the reason of the message.
To fix it, you should do an if to check if adress have the relationship:
<ul>
#foreach($adresses as $adress)
<li>{{ $adress->Name1 }}</li> //this is working
<li>
#if($adress->KontoKorrent)
{{ $adress->KontoKorrent->Kto }}
#else
<!-- Put something here if you want, otherwise remove the #else -->
#endif
</li> //this is NOT working
#endforeach
</ul>
This can be shortened to:
{{ $adress->KontoKorrent ? $adress->KontoKorrent : 'the else content' }}
or in PHP >= 7.0, you can use the null coalesce operator:
{{ $adress->KontoKorrent ?? 'the else content' }}

"Use of undefined constant..." error in Laravel

I am a Laravel newbie. I want to pass the results of a database query to a view. I get an error message "Use of undefined constant tasks - assumed 'tasks'". What am I doing wrong?
My code is as follows:
class TasksController extends BaseController{
public function index(){
$tasks = Task::all();
//return View::make(tasks.index, ['tasks' => $tasks]);
return View::make(tasks.index, compact('tasks'));
}
A snippet from my template page is shown below:
<body>
<h1>All tasks!</h1>
#foreach($tasks as $task)
<li>{{ $task-title }} </li>
#endforeach
return View::make('tasks.index')->with(compact('tasks'));
also change:
<li>{{ $task-title }} </li>
to
<li>{{ $task->title }} </li>
should be like this.
Try this,
return View::make(tasks.index, $tasks);
instead of
return View::make(tasks.index, compact('tasks'));

Categories