Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Laravel] Routes
Forum PHP.pl > Forum > PHP > Frameworki
Randallmaster
1 pytanie:

mam stworzonego routa:

Route::resources('users', 'UsersController')

jak teraz zmienić w metodzie index() (UsersController@index) aby dodać do niej parametr?

muszę wszystkie metody z UsersController wypisać

Route::get('users/{param?}', 'UsersController');
itd...

czy można to jakoś wstrzyknąć?

2 pytanie:

mam widok z parametrem

/users/1

czy jest możliwość ustawienia parametru null? aby po wejście na stronę /users nie wywalało mi błędu z brakującym parametrem.


Pyton_000
1. Dodaj poniżej tylko zmieniany route np:
Kod
Route::get('users/{param?}', 'UsersController');

2. w metodzie musisz dać parametr = null
Randallmaster
Cytat(Pyton_000 @ 25.08.2015, 16:25:35 ) *
1. Dodaj poniżej tylko zmieniany route np:
Kod
Route::get('users/{param?}', 'UsersController');


- Jak dodam tak :
Kod
Route::get('users/{param?}', 'UsersController');

Błąd: Invalid route action:

- Wydawało mi się ze chodziło ci o:
Kod
Route::get('users/{param?}', 'UsersController@index');

Ale też występuje błąd ponieważ miesza się z linkami taki jak:
UsersController@show która korzysta z users/{param?}
Malukaz
podpinam sie pod pytanie twórcy tematu.
memory
  1. Route::get('users/{param?}', 'UsersController@index');

następnie
  1. class UsersController {
  2.  
  3. public function index($param = null){
  4.  
  5. }
  6. }


Czytaj dokładnie pyton ci napisał w metodzie
Randallmaster
memory czytam dokładnie?
i chodzi teraz o pierwszy punkt nie drugi...
Pyton_000
Ehh...
  1. resource('users', 'UsersController');
  2. get('users/{users?}', 'UserController@index');
Randallmaster
Pyton_000 może ciągle błędnie czytam ale od początku:

  1. //routes.php
  2.  
  3. Route::resource('pages', 'PagesController');
  4. Route::get('pages/{page?}', 'PagesController@index');


routes list
Kod
GET|HEAD                       | pages                                                 | pages.index          | App\Http\Controllers\PagesController@index                 |            |
|        | POST                           | pages                                                 | pages.store          | App\Http\Controllers\PagesController@store                 |            |
|        | GET|HEAD                       | pages/create                                          | pages.create         | App\Http\Controllers\PagesController@create                |            |
|        | GET|HEAD                       | pages/{page?}                                         |                      | App\Http\Controllers\PagesController@index                 |            |
|        | GET|HEAD                       | pages/{pages}                                         | pages.show           | App\Http\Controllers\PagesController@show                  |            |
|        | PUT                            | pages/{pages}                                         | pages.update         | App\Http\Controllers\PagesController@update                |            |
|        | PATCH                          | pages/{pages}                                         |                      | App\Http\Controllers\PagesController@update                |            |
|        | DELETE                         | pages/{pages}                                         | pages.destroy        | App\Http\Controllers\PagesController@destroy               |            |
|        | GET|HEAD                       | pages/{pages}/edit                                    | pages.edit           | App\Http\Controllers\PagesController@edit                  |


Problem jest w tym, że jak teraz wejdę na stronę /pages/2 to korzysta mi z metody show a nie z index.
działa dopiero poprawnie jak routes zmienie na:

  1. //czyli wywale z routa show
  2.  
  3. Route::resource('pages', 'PagesController',['except' => ['show']]);
  4. Route::get('pages/{page?}', 'PagesController@index');


Sorry jeżeli się czepiam i marudzę, ale chcę dokładnie wiedzieć.
resful controllers nie uwzględnił używania paginacji na index? przecież to normalne że jeżeli dodać parametr do index będzie się mieszał z show chyba że źle myślę.
memory
Sam rozwiązałeś zagadkę :]. Kolejność ma znaczenie
  1. Route::resource('pages', 'PagesController']);
  2. Route::get('pages/{page?}', 'PagesController@index');
  3.  


Na początku masz trasy z resource dlatego pierwszy będzie show. Wystarczy zamienić miejscami i pierwsza trasa będzie index

  1. Route::get('pages/{page?}', 'PagesController@index');
  2. Route::resource('pages', 'PagesController']);


Nawiasem do paginacji nie jest ci potrzebny żaden parametr w metodzie index.
Pyton_000
@memory ale On chce ładne url a nie tak jak obecnie paginacja ma ?page...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.