|
|
|
How to Pass value(date,month,year) in Laravel URL Parameter |
|
|
|
|
|
|
|
How to Pass value(date,month,year) in Laravel URL Parameter
เช่น subject.php?date=07&month=6&year=2018
ตอนนี้มัน error ว่า Undefined variable: date.....sidebar.blade.php
Controller
class StatisticsController extends Controller
{
public function statistics($date,$month,$years)
{
$date=date('d');
$years=date('Y');
$startYear = 2014;
$month=['1','2','3','4','5','6','7','8','9','10','11','12'];
$mthai=['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม']
$data = array('date'=>$date,'years'=>$years,'startYear'=>$startYear,'month'=>$month,'mthai'=>$mthai);
dd($month);
return view('Pages.statisticsMenu')->with(['data' => $data]);
}
}
route
Route::get('/statistics/{date}/{month}/{year}','Report\StatisticsController@statistics')->name('statistics');
sidebar
@for ($m=1;$m<=12;$m++)
<li>
<a href="{{ route('statistics',['date' => $date->date,'month' => $month->month,'year' => $year->year]) }}">{{ $mthai[$m] }} {{ $y+543 }}</a>
</li>
@endfor
view file statisticsMenu.blade.php
<li><a href="#">% เติบโต A B C
<span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li class="sub_menu"><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
Error
Undefined variable: date
(View: D:\Apache24\htdocs\Laravel\Report\resources\views\layouts\partials\sidebar.blade.php)
Tag : PHP, Ms SQL Server 2016, Laravel Framework
|
ประวัติการแก้ไข 2018-06-07 13:42:27 2018-06-07 13:43:50 2018-06-07 16:00:38 2018-06-07 18:36:10
|
|
|
|
|
Date :
2018-06-07 13:41:50 |
By :
nottpoo |
View :
2273 |
Reply :
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หัวข้อกระทู้กับ error รู้สึกจะไม่ตรงกัน error มันบอกว่า
"sidebar.blade.php" ไม่เจอตัวแปร $date
คำถาม
statisticsMenu.blade.php กับ sidebar.blade.php มีความเชื่อมโยงกันอย่างไร เช่น @extends ,@include ?
|
|
|
|
|
Date :
2018-06-07 16:49:20 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้า include คุณต้องส่ง parameter จาก view หลักให้มันด้วย
ex. @include('sidebar', ['date' => $date, 'month' => $month, 'year' => $year])
|
|
|
|
|
Date :
2018-06-07 16:57:44 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จาก
Route::get('/statistics/{date}/{month}/{year}','Report\StatisticsController@statistics')->name('statistics');
แล้วเขียนรับด้วย
public function statistics($date,$month,$years)
รับตัวแปร จาก browser แบบนี่คิดว่าไม่ใช่ครับ
แต่ด้วยที่ผมไม่เคยใช้ laravel เลยไม่รู้คำสั่งที่เรียกใช้ เลยเอาตัวอย่างจากการแบ่ง REQUEST URI มาใช้
แต่อาจจะไม่ใช่ก็ได้ (เดาเอาจากการเขียน codeigniter ซึ่งไม่รู้จะเหมือนกันหรือเปล่า)
ตัวอย่าง
Code (PHP)
public function statistics(){
$sgm = explode('/', filter_input(INPUT_SERVER, 'REQUEST_URI'));
$date = $sgm[2];
$month=$sgm[3];
$year=$sgm[4];
}
|
|
|
|
|
Date :
2018-06-07 21:50:09 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ยังไม่ได้รับคตอบที่จะแก้ไขปัญหาได้เลยคะ แต่ก็ขอบคุณที่เข้ามาตอบกันคะ
|
|
|
|
|
Date :
2018-06-08 08:52:16 |
By :
nottpoo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-06-07 21:50:09
รายละเอียดของการตอบ ::
"จาก
Route::get('/statistics/{date}/{month}/{year}','Report\StatisticsController@statistics')->name('statistics');
แล้วเขียนรับด้วย
public function statistics($date,$month,$years)
รับตัวแปร จาก browser แบบนี่คิดว่าไม่ใช่ครับ"
> อันนี้รับแบบนี้ถูกแล้วครับพี่ แต่ถ้าเป็น query string ต้องใช้ Request รับ ครับ
ex /report?foo=bla
function report(Request $request){
return $request->foo;
}
ตอบความคิดเห็นที่ : 3 เขียนโดย : nottpoo เมื่อวันที่ 2018-06-07 18:25:07
รายละเอียดของการตอบ ::
คุณแปะ Controller ที่คุณบอกว่า extends มาให้ผมดูหน่อยครับ ขอ method ที่เรียกเจ้า sidebar.blade.php และ view ที่เกี่ยวข้อง
|
|
|
|
|
Date :
2018-06-08 09:22:41 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Controller
Code (PHP)
namespace SocialNet\Http\Controllers\Report;
use Illuminate\Http\Request;
use SocialNet\Http\Controllers\Controller;
class StatisticsController extends Controller
{
// public function statistics($date,$month,$years)
public function statistics()
{
$date=date('d');
$years=date('Y');
$startYear = 2014;
$month=['1','2','3','4','5','6','7','8','9','10','11','12'];
$mthai=['มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'];
$data = array('date'=>$date, 'years'=>$years, 'startYear'=>$startYear, 'month'=>$month, 'mthai'=>$mthai);
//dd($data);
return view('Pages.statisticsMenu')->with($data);
//return view('layouts.partials.sidebar')->with(['data' => $data]);
}
}
Route
Code (PHP)
Route::get('/statistics/year/{year}/month/{month}/date/{date}','Report\StatisticsController@statistics')->name('statistics');
Layouts
default.blade.php
Code (PHP)
<!DOCTYPE html>
<html lang="en">
<head>
@include('layouts.partials.heads')
</head>
<body class="nav-md">
<div class="container body">
<div class="main_container">
<div class="col-md-3 left_col">
<div class="left_col scroll-view">
<div class="navbar nav_title" style="border: 0;">
<a href="index.html" class="site_title"><i class="fa fa-paw"></i> <span>@yield('title')</span></a>
</div>
<div class="clearfix"></div>
<!-- menu profile quick info -->
<div class="profile clearfix">
<div class="profile_pic">
<img src="images/img.jpg" alt="..." class="img-circle profile_img">
</div>
<div class="profile_info">
<span>Welcome,</span>
<h2>@yield('name')</h2>
</div>
</div>
<!-- /menu profile quick info -->
<br />
<!-- sidebar menu -->
@section('sidebar')
@include('layouts.partials.sidebar')
@show
<!-- /sidebar menu -->
<!-- /menu footer buttons -->
@section('menufooter')
@include('layouts.partials.menufooter')
@show
<!-- /menu footer buttons -->
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="dashboard_graph">
{{-- header --}}
@section('header')
@show
{{-- header --}}
{{-- detail --}}
@section('detail')
@show
{{-- detail --}}
<div class="clearfix"></div>
</div>
</div>
</div>
</body>
</html>
sidebar
Code (PHP)
@for ($m=1;$m<=12;$m++)
<li>
<a href="{{ route('statistics',['date' =>date,'month' => $month,'year' => $year]) }}">
@foreach ($mthai as $key)
{{ $key->mthai[$m] }} {{ $y+543 }}
@endforeach
</a>
</li>
@endfor
view file
statisticsMenu.blade.php
Code (PHP)
@extends('layouts.defualt')
@section('detail')
@parent
<li><a href="#">% เติบโต A B C
<span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li class="sub_menu"><a href="#">A</a></li>
<li><a href="#">B</a></li>
<li><a href="#">C</a></li>
</ul>
</li>
@endsection
|
|
|
|
|
Date :
2018-06-08 10:02:17 |
By :
nottpoo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default.blade.php
33. @include('layouts.partials.sidebar', ['date' =>$date,'month' => $month,'year' => $year])
แก้ไขตรงนี้ครับ แล้วลองดู
|
|
|
|
|
Date :
2018-06-08 10:33:49 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sidebar.balde.php ผิด 1 จุดนะครับ
<a href="{{ route('statistics',['date' =>$date, 'month' => $month, 'year' => $year]) }}">
|
|
|
|
|
Date :
2018-06-08 10:35:32 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มัน dd ข้อมูลได้นะ
มันออกมายาวพรืดเลย
ต้องออกมาแค่วันที่รับค่ามาเท่านั้นนะ
statistics?date=07&month=6&year=2018
|
ประวัติการแก้ไข 2018-06-08 13:03:06 2018-06-08 13:05:04 2018-06-08 13:05:24 2018-06-08 13:28:17 2018-06-08 13:35:12 2018-06-08 13:35:42 2018-06-08 13:44:21
|
|
|
|
Date :
2018-06-08 13:02:07 |
By :
nottpoo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณอยากให้มันออกมายังไงก็ส่งไปแบบนั้นสิคร๊าบบบ
ตัวอย่าง parameter ข้างบนต้องเป็น ['year' => 2017 , 'month' => 6, 'day' => 8 ];
หรือคุณจะส่ง month ไปแค่เดือนเดียว คือ จะ ไป loop ข้างในแล้วสร้าง
หรือ จะ foreach ($month as $m) {
สร้าง link ในนี้
}
แล้วคุณเข้าใจ error ที่คุณได้ครั้งแรก หรือยังครับว่าเกิดจากอะไร ?
|
|
|
|
|
Date :
2018-06-08 15:16:15 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@เจ้าของกระทู้
ผมจะไม่ขออ่าน error ละกันนะครับแต่จากเท่าที่อ่านโค๊ดขอแนะนำ
1 ควรจะส่ง parameter มาจาก controller ไม่ควรมา ประการเองใน view เพื่อเวลาเราแก้จะได้ไม่สับสน
Sidebar
$nowyear=date('Y');
$startYear = 2014;
ซึ่ง 2 ตัวแปรนี้ ใน controller ก็มีครับ
2 การตั้งชื่อตัวแปร ควรจะตั้งให้สื่อความหมาย อันไหน เอกพจน์ พหูพจน์จะไม่ดูง่าย
เช่น
$car = "BMW";
$cars = ["BMW","Benz","Toyota"];
3 ใน blade มันมีตัวแปรใน loop ให้ใช้งานแล้วครับ
https://laravel.com/docs/5.6/blade#the-loop-variable
ถ้าไม่เข้าใจตรงไหนถามได้ครับ
ปล ต้องขอโทษด้วยครับที่ขี้เกียจอ่านโค๊ดมันอ่านยากไปหน่อย
|
|
|
|
|
Date :
2018-06-11 10:35:11 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Edit
ประการ -> ประกาศ
|
|
|
|
|
Date :
2018-06-11 10:37:05 |
By :
DK |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|