Reputation: 1407
when I created a chart in my dashboard is working fine. But after when I go to another page like the post page, Then this chart error occurred. how can I solve this. I have use this footer page in all pages. This footer shows an error in other page.
Undefined variable: chart (View: C:\wamp64\www\AdBlog\resources\views\admin\layouts\footer.blade.php)
And this is my Footer page for all admin page
<footer class="main-footer">
<div class="pull-right hidden-xs">
<b>Version</b> 2.3.8
</div>
<strong>Copyright © 2019-{{ Carbon\carbon::now()->year }} <a href="http://facebook.com">NS Tech</a>.</strong> All rights
reserved.
<script src="{{ asset('admin/plugins/jQuery/jquery-2.2.3.min.js') }}"></script>
<!-- jQuery UI 1.11.4 -->
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip -->
<script>
$.widget.bridge('uibutton', $.ui.button);
</script>
<!-- Bootstrap 3.3.6 -->
<script src="{{ asset('admin/bootstrap/js/bootstrap.min.js') }}"></script>
<!-- Morris.js charts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="{{ asset('admin/plugins/morris/morris.min.js') }}"></script>
<!-- Sparkline -->
<script src="{{ asset('admin/plugins/sparkline/jquery.sparkline.min.js') }}"></script>
<!-- jvectormap -->
<script src="{{ asset('admin/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js') }}"></script>
<script src="{{ asset('admin/plugins/jvectormap/jquery-jvectormap-world-mill-en.js') }}"></script>
<!-- jQuery Knob Chart -->
<script src="{{ asset('admin/plugins/knob/jquery.knob.js') }}"></script>
<!-- daterangepicker -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.2/moment.min.js"></script>
<script src="{{ asset('admin/plugins/daterangepicker/daterangepicker.js') }}"></script>
<!-- datepicker -->
<script src="{{ asset('admin/plugins/datepicker/bootstrap-datepicker.js') }}"></script>
<!-- Bootstrap WYSIHTML5 -->
<script src="{{ asset('admin/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js') }}"></script>
<!-- Slimscroll -->
<script src="{{ asset('admin/plugins/slimScroll/jquery.slimscroll.min.js') }}"></script>
<!-- FastClick -->
<script src="{{ asset('admin/plugins/fastclick/fastclick.js') }}"></script>
<!-- AdminLTE App -->
<script src="{{ asset('admin/dist/js/app.min.js') }}"></script>
<!-- AdminLTE dashboard demo (This is only for demo purposes) -->
<script src="{{ asset('admin/dist/js/pages/dashboard.js') }}"></script>
<!-- AdminLTE for demo purposes -->
<script src="{{ asset('admin/dist/js/demo.js') }}"></script>
<!--Chart js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js" charset="utf-8"></script>
{!! $chart->script() !!}
{!! $linechart->script() !!}
@section('footerSection')
@show
</footer>
This is my controller page for chart.js
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Model\user\User;
use App\Model\user\category;
use App\Model\user\post;
use App\Model\user\tag;
use Illuminate\Http\Request;
use App\Charts\ViewsChart;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:admin');
}
public function index()
{
$userCount = User::count();
$publishedPostsCount = post::where('created_at', '!=', null)->count();
$publishedCategoriesCount = tag::where('created_at', '!=', null)->count();
$publishedTagsCount = category::where('created_at', '!=', null)->count();
//for bar chart
$chart = new ViewsChart;
$chart->labels(['tags', 'category', 'posts', 'users']);
$dataset = $chart->dataset('Number of Records', 'bar', [$publishedTagsCount, $publishedCategoriesCount, $publishedPostsCount, $userCount]);
$dataset->backgroundColor(collect(['#7158e2','#3ae374', '#ff3838', '#7158e2']));
$dataset->color(collect(['#7d5fff','#32ff7e', '#ff4d4d', '#7158e2']));
//for doughnut chart1
$linechart = new ViewsChart;
$linechart->labels(['tags', 'category', 'posts', 'users']);
$dataset = $linechart->dataset('Number of Records', 'doughnut', [$publishedTagsCount, $publishedCategoriesCount, $publishedPostsCount, $userCount]);
$dataset->backgroundColor(collect(['#ff6384','#36a2eb', '#cc65fe', '#ffce56']));
$dataset->color(collect(['#7d5fff','#32ff7e', '#ff4d4d', '#7158e2']));
return view('admin.home')->with([
'user_count' => $userCount,
'published_post_count' => $publishedPostsCount,
'published_category_count' => $publishedCategoriesCount,
'published_Tag_count' => $publishedTagsCount,
'chart' => $chart,
'linechart' => $linechart
]);
}
}
web.php
//Admin Routes (web.php):
Route::group(['namespace' => 'Admin'], function(){
Route::get('admin/home','HomeController@index')->name('admin.home');
//Route::resource('admin/post','Admin\PostController'); -> uses this if not resource controller
//User routes
Route::resource('admin/user','UserController');
//Role routes
Route::resource('admin/role','RoleController');
//Permission routes
Route::resource('admin/permission','PermissionController');
//Post routes
Route::resource('admin/post','PostController');
//tag routes
Route::resource('admin/tag','TagController');
//category routes
Route::resource('admin/category','CategoryController');
//Admin Routes 1
Route::get('admin-login','Auth\LoginController@showLoginForm')->name('admin.login');
// Admin Routes2 copy 1,2 from Router.php auth code and edit yourself
Route::post('admin-login', 'Auth\LoginController@login');
});
Upvotes: 2
Views: 837
Reputation: 521
add this in footer.blade.php
to check if the current route name is admin.home
@if(Route::currentRouteName() == 'admin.home')
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js" charset="utf-8"></script>
{!! $chart->script() !!}
{!! $linechart->script() !!}
@endif
more info about Accessing The Current Route
Hope this helps!
Upvotes: 1