Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CakePHP] Modyfikacja odnośnika w paginatorze
php22
post 18.09.2012, 07:10:21
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 7.08.2007

Ostrzeżenie: (0%)
-----


W jaki sposób zmodyfikować linki generowane przez paginator?
Myślę ż można by to zrobić w pliku /cake/libs/view/helpers/paginaor.php ale moje próby nie przynoszą rezultatu..
Jak dodać do linku o postaci cokolwiek żeby wyglądał tak:
oryginalny link (wygenerowany):
mojastrona.pl/costam/layout/100/page:5
po modyfikcji:
(tutaj zmiana).pl/(lub tutaj zmiana)/layout/100/page:5

Go to the top of the page
+Quote Post
erix
post 18.09.2012, 12:44:53
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Z tego, co wiem, to łatwo się tego nie da, niestety, zrobić...

Paginacja w Cake'u, to jeden z wrzodów na tyłku, jeśli chodzi o dostosowywanie wg własnych potrzeb (jeśli chodzi o schemat linków). IMO pozostaje tylko ob_start przed wysłaniem paginacji do widoku i zamiana parametrów we własnej klasie routingu.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kicaj
post 18.09.2012, 18:53:51
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

Ostrzeżenie: (0%)
-----


  1. Router::connect('/:language/'. __('wydarzenia', true) .'/:year', array(
  2. 'controller' => 'events',
  3. 'action' => 'index'), array(
  4. 'language' => '[a-z]{2}',
  5. 'year' => '[1-2]{1}[0-9]{3}'));

Może powyższy kod pomoże.
Możesz używać dowolnych zmiennych, jednakże musisz je zdeklarować (chociażby wyrażeniem regularnym jak wyżej) w trzecim argumencie metody.


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kleus
post 19.09.2012, 10:40:34
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


Paginacja w caku nie lezy i nie kwiczy i mozna ladne url szybko zrobic
  1. //Router.php
  2. Router::connect('/admin/:controller/:sort,:direction',
  3. 'controller' => 'pages',
  4. 'action' => 'index',
  5. 'admin' => true,
  6. 'prefix' => 'admin',
  7. 'plugin' => false
  8. ),
  9. 'pass' => array(
  10. 'sort',
  11. 'direction'
  12. ),
  13. 'sort',
  14. 'direction'
  15. )
  16. );
  17.  
  18. //Controller
  19. public function beforeFilter(){
  20. if(isset($this->params['prefix']) && $this->params['prefix'] === 'admin'){
  21. $this->helpers[] = 'Tinymce';
  22. }
  23. $this->__paginateParams();
  24. }
  25. protected function __paginateParams(){
  26. if(isset($this->request->params['pass']['page'])){
  27. $this->request->params['named']['page'] = $this->request->params['page'];
  28. }
  29. if(isset($this->request->params['sort'])){
  30. $this->request->params['named']['sort'] = $this->request->params['sort'];
  31. }
  32. if(isset($this->request->params['direction'])){
  33. $this->request->params['named']['direction'] = $this->request->params['direction'];
  34. }
  35. if(isset($this->request->params['pass']['limit'])){
  36. $this->request->params['named']['limit'] = $this->request->params['limit'];
  37. }
  38. }
  39. /// VIEW moze byc wygenerowany przez CakePHP
  40.  
  41.  
Go to the top of the page
+Quote Post
erix
post 19.09.2012, 11:37:28
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Paginacja w caku nie lezy i nie kwiczy i mozna ladne url szybko zrobic

Jeśli to nazywasz "szybko zrobić", to cóż. tongue.gif

Poza tym, nie widzę tu nigdzie, abyś zmienił schemat generowania linków przez PaginatorHelper.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kleus
post 19.09.2012, 13:10:29
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


Tak nazywam to szybko.
z podanego przykładu wrzucasz funkcje do AppController.php i reszta controllerów też zaczyna z tego korzystać.
To samo tyczy się Routingu, każdy controller bedzie korzystał z niego.
Go to the top of the page
+Quote Post
erix
post 19.09.2012, 13:17:29
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ja wiem, że do AppController, ale w jaki sposób chcesz zmusić PaginatorHelper do generowania linków wg nowego schematu?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kleus
post 19.09.2012, 13:21:00
Post #8





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


Cytat(php22 @ 18.09.2012, 08:10:21 ) *
W jaki sposób zmodyfikować linki generowane przez paginator?
Myślę ż można by to zrobić w pliku /cake/libs/view/helpers/paginaor.php ale moje próby nie przynoszą rezultatu..
Jak dodać do linku o postaci cokolwiek żeby wyglądał tak:
oryginalny link (wygenerowany):
mojastrona.pl/costam/layout/100/page:5
po modyfikcji:
(tutaj zmiana).pl/(lub tutaj zmiana)/layout/100/page:5


Jeżeli chcesz już modyfikować domyślny Helper to radze napisać własny Helper dziedziczący po tym Helperze dla przykładu podaje link do zmodyfikowanego Helpera
https://github.com/slywalker/TwitterBootstr...natorHelper.php

Dodatkowo jeżeli chcesz wstawić po nazwie domeny jakiś parametr przed paginacją myśle, że można to zrobic przez
  1. $this->Paginator->options()
lub
  1. $this->Paginator->params()


Cytat(erix @ 19.09.2012, 14:17:29 ) *
Ja wiem, że do AppController, ale w jaki sposób chcesz zmusić PaginatorHelper do generowania linków wg nowego schematu?


Można do routera dodać parametr
  1. Router::connect('/:param/:controller/:sort,:direction',
  2. 'controller' => 'pages',
  3. 'action' => 'index',
  4. 'plugin' => false
  5. ),
  6. 'pass' => array(
  7. 'sort',
  8. 'direction',
  9. 'param'
  10. ),
  11. 'sort',
  12. 'direction'
  13. )
  14. );


Ten post edytował kleus 19.09.2012, 13:24:04
Go to the top of the page
+Quote Post
erix
post 20.09.2012, 12:47:43
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tak, ja to rozumiem, tylko czy wtedy PaginatorHelper również generuje odpowiednie linki w widoku?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kleus
post 27.09.2012, 16:11:29
Post #10





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 22.10.2009
Skąd: Siędzę

Ostrzeżenie: (0%)
-----


no nie zrobi tego faktycznie, ale gdzieś kiedyś widziałem rozwiązanie tego... jak dalej potrzebne to moge poszukac...

tak w pluginie i18n napisanem przez cakedc jest cos takiego
  1. class AppHelper extends Helper {
  2.  
  3. public function url($url = null, $full = false) {
  4. if (is_array($url) && !array_key_exists('lang', $url)) {
  5. $url['lang'] = Configure::read('Config.language');
  6. }
  7. return parent::url($url, $full);
  8. }
  9. }

można pzerobić i po sprawie

Ten post edytował kleus 27.09.2012, 16:14:22
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 23:22