laravel jak ustawić zmiennej opcjonalne

0

Mam taki problem jak ustawić w routingu, żeby dana zmienna była opcjonalna to znaczy żeby czasami jak się przechodzi przed dany roting nie wymagać danej zmiennej a czasami tak

Roting

 Route::get('/admin/staty/search/{start?}/{end?}/{search?}/{search2?}/{od?}/{do?}', [
  'uses' => 'AdminController@staty4',
  'middleware' => 'roles',
  'roles' => ['Admin']
]);

I tu chodzi o zmienną od i do

I tu jeszcze kontroller.

    public function staty4($start,$end,$search,$search2,$od,$do) {
    
            $this->add_staty("statystyki");
      if (empty($start) ) {
	$start = 0;
	$end = 15;
      }
      print Input::get("od");
      if (!empty(Input::get('search') ) ) {
	//print $search;
	//$search = Input::get('search');
	//$search2 = Input::get('search2');
	$search = Input::get('search');
	$search2 = Input::get('search2');
      }
      if (empty($od) ) {
	$od = Input::get("od");
	$do = Input::get("do");
      }
      print $od;
      $staty = $this->read_staty($start,$end,false,$search,$search2,$od,$do);
      //var_dump($staty);
      $draw = $this->draw_page2($this->question);
      //$a = geoip()->getLocation('80.80.80.80');
      //print_r(geoip_country_name_by_name("78.10.204.31"));
      //print_r(geoip_asnum_by_name("78.10.204.31"));
      //print_r(geoip_record_by_name('php.net'));
      //echo geoip_country_code3_by_name($_SERVER['REMOTE_ADDR']);
      //$a = getLocation("127.0.0.1");
      //print $a->country;
      //dd($a);
      return View('admin.staty3_dashboard')->with('staty',$staty)->with('draw',$draw)->with('search',$search)->with('search2',$search2)->with('od',$od)->with('do',$do);
    }
0

Teraz jak to umieścić w tym moim kontrolerze bo ja mam trochę inny routing

próbowałem czegos takiego, ale zwraca błąd.
syntax error, unexpected '}'

 Route::get('/admin/staty/search/{start?}/{end?}/{search?}/{search2?}/{od?}',function ($od = null) {  [
  'uses' => 'AdminController@staty4',
  'middleware' => 'roles',
  'roles' => ['Admin']
]});

Tak to zrobiłem, ale zwraca błąd.

0

Bo nie masz średnika... programujesz lodówką? :D Poza tym co to za konstrukcja, funkcja, która zawiera tablice i nic z nią nie robi.

Twój kod wygląda jak wielkie kupsko. Popraw te rzeczy, to może ktoś na ten kod spojrzy:

  • dodawaj spacje pomiędzy argumentami
staty4($start, $end, $search, $search2, $od, $do)
  • nazewnictwo angielskie, a nie raz piszesz draw, a raz staty, a innym razem, od - do. Później powstają takie twory jak is_sprzedana
  • nazywaj zmienne normalnie, search2, czy staty4 to fatalne nazwy
  • formatuj ten kod jakoś normalnie...
// zwróć uwagę, że nawet linie schodza od najdłuższej do najkrótszej, bo dla mnie taki kod wygląda porządnie
// a nie wszystko jednym ciągiem
return View('admin.staty3_dashboard')
        ->with('search2', $search2)
        ->with('search', $search)
        ->with('staty', $staty)
        ->with('draw', $draw)
        ->with('od', $od) // od jest przed do :D żeby gówno miało glanc
        ->with('do', $do);
  • nie zostawiamy martwego kodu, po to jest git (czy inne repozytorium kodu), żeby z niego korzystać. Kod usuwamy, a nie komentujemy. Najlepiej w osobnym commicie, żebyś mógł łatwo to znaleźć. Czyli jak usuwasz jakąś funkcjonalność to nie komentujesz jej, tylko usuwasz, commitujesz, ładnie opisujesz commita i voila.
  • przeczytaj jakiś clean code, poszukaj w google how to name variables in a meaningful way php naming conventions itd.
1

Dlaczego tylko dla $od masz $od = null, a dla reszty parametrów opcjonalnych nie masz wartości podstawowej?
Musisz dodać wszystkie {start?}/{end?}/{search?}/{search2?}/{od?} jako = null.

1
public function staty4($start = '',$end = '',$search = '',$search2 = '',$od = '',$do = '') 

1 użytkowników online, w tym zalogowanych: 0, gości: 1