Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Code Igniter] Zmienne wnętrze strony, Problem z dynamicznymi stronami w CI ?
Tomplus
post
Post #1





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Czytałem kurs Rikk'a ale nic ciekawego tam nie znalazłem.
Dla mnie przykłady nie są dobre, za bardzo są ukierunkowane na jedną rzecz.

Jeszcze znalzłem kurs Groadina, ale tam też nie mogę znaleźć tego co potrzebuje.

Z PHP5 u mnie nie najlepiej ale próbuje się dokształcać.

(ciąg dalszy w drugiej mojej odpowiedzi)

Ten post edytował Tom+ 23.03.2007, 18:29:29
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
kwiateusz
post
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




zrób tak jak ktoś na tym forum że parsowanie szablonu daj w destruktorze klasy i będzie za każdym razem ten sam szablon
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


nadal nie rozumie, ale dobra ...

zadam pytanie inaczej.

przedstawiam fragment kontrolera CI

Styl jest w layout, ale nie w tym rzecz.
  1. <?php
  2. function index()
  3.  {
  4. $content['main'] = $this->load->view('pl', array(), true);
  5. $this->load->view('layout', $content);
  6.  }
  7.  
  8. function stronka()
  9. {
  10. $content['main'] = $this->load->view('stronka', array(), true);
  11. $this->load->view('layout', $content);
  12. }
  13. ?>


w tej postaci adres mi wygląda w ten sposób
www.strona.pl/pl/
a kolejna
www.strona.pl/pl/stronka/

niby dobrze niby fajnie, ale coś mi tu nie pasuje.

za każdym razem kiedy dodaje nową stronę to musiałbym edytować ten kontroler i dodawać funkcje.
Jest to nie wygodne.

Więc pytanie:
Jak zrobić aby za każdym razem wpisując za /stronka/ inną nazwę pliku który jest w tym samym katalogu się wyświetlał ?
Go to the top of the page
+Quote Post
kwiateusz
post
Post #4


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




ale wpisując cokolwiek po stronka to nie odpali innej metody kontrolera, bądź innego kontrolera tylko metode stronka a reszta to będą parametry dostepne przez uri...
Go to the top of the page
+Quote Post
Tomplus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


tak, zgadza się. Ja to wiem.

tylko chce własnie rozwiązanie takie ze jak wpisze cokolwiek co istnieje pod /stronka to się wyswietli

co zrobić aby ta 'stronka' stala sie parametrem i jak go odczytac, aby mozna bylo go zastosowac w kontrolerze ?
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


zapoznaj się z przewodnikiem CI i poszukaj co to routing - to powinno rozwiązać Twoje problemy


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
nrm
post
Post #7





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


jakbys się prościej wysławiał to może dało by się coś zrobić, a tak ciężko zrozumiec o co ci w ogóle chodzi.

www.strona.pl/pl/stronka

$stronka = $this->uri->segment(2);

poza tym: routing + dynamiczne generowanie tej zawartosci.


--------------------
Go to the top of the page
+Quote Post
Tomplus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Okej, to powiem jeszcze raz.

w CI jest coś takiego jak
Controller oraz Views

żeby pokazać stronkę w postaci adresu www.strona.pl/pl/stronka

trzeba w C dodac plik pl.php a w nim
funkcja stronka() oraz

zadając pytanie.
Jak mam zrobić aby 'stronka' była zmienną.

aby działała taka funkcja
  1. <?php
  2. function index($show='stronka0')
  3. {
  4. $this->load->view($show);
  5. }
  6. ?>
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #9





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


czytałeś user_guide'a od CodeIgniter'a? bo coś mi się widzi, że albo nie, albo nie znasz dobrze angielskiego, bo tam wszystko pięknie opisane jest

normalnie: www.mojastrona.pl/klasa/funkcja/zmienna
ustawiasz: $route['cos/zmienna']='klasa/funkcja';
wynik: www.mojastrona.pl/cos/zmienna powoduje wywołanie klasy "klasa", w niej funkcji "funkcja" z parametrem "zmienna"

analogicznie u ciebie:
normalnie: www.mojastrona.pl/pl/stronka
ustawiasz: $route['pl/:any']='pl/index';
wynik: www.mojastrona.pl/pl/tescik spowoduje wywołanie klasy "pl", w niej funkcji "index" z parametrem "tescik"
  1. <?php
  2. function index($show='stronka0'){//domyślna strona przy wywołaniu www.mojastrona.pl/pl/
  3. $this->load->view($show);//tutaj wywoła to co podasz w parametrze
  4. }
  5. ?>
nie da się tego prościej wytłumaczyć tongue.gif mam nadzieję, że to Ci w końcu pomoże


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
Tomplus
post
Post #10





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


plik routes.php
  1. <?php
  2. $route['default_controller'] = "pl";
  3. $route['pl/:any']='pl/index';
  4. ?>


plik /controller/pl.php
  1. <?php
  2. class Pl extends Controller
  3. {
  4. function index($show='start')
  5.  {
  6. $content['main'] = $this->load->view($show, array(), true);
  7. $this->load->view('layout', $content);
  8.  }
  9. ?>


gdzie layout to plik w Views z szablonem.

gdy wpisuje www.strona.pl/pl/cokolwiekcoistniejewviews
i nie mam błąd 404 i odpowiedź strona cokolwiekcoistniejewviews.php nie isnieje


Czy czytałem dokumentacje ?
i tak, i nie. - nie wszystko co tam pisze potrafię zastosować, albo logicznie wyciągnąć z nich jakiś wniosków.
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #11





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


nie istnieje, bo go nie masz - to Twój nowy widok - stwórz ten plik i zobacz czy działa

a działa na pewno - teraz nie musisz edytować kontrolera - po prostu dla każdej nowej stronki tworzysz nowy widok - przecież o to Ci właśnie chodziło, prawda?


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
Tomplus
post
Post #12





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Tak, tworze widoki,
w katalogu views mam kilka plików które powinien wyświetlić

jeżeli nadal będę stosował
  1. <?php
  2. function test($show='strona') {
  3. $content['main'] = $this->load->view($show, array(), true);
  4. $this->load->view('layout', $content);
  5. }
  6. ?>

działa wszystko
www.strona.pl/pl/test/
www.strona.pl/pl/test/strona
a nawet
www.strona.pl/pl/test/stroneczka

Tak mi się zdaje że ten routing.php nie działa.


  1. <?php
  2. function index()
  3.  {
  4.  
  5. $show = $this->uri->segment(2, 'strona');
  6. $content['main'] = $this->load->view($show, array(), true);
  7. $this->load->view('layout', $content);
  8.  }
  9. ?>


spróbowałem nawet zastosowac segmentacje, ale też nic.

Są jeszcze jakieś sztuczki ?

Ten post edytował Tom+ 23.03.2007, 15:39:16
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #13





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


route działa - podałem Ci dokładnie to samo rozwiązanie jakie miałem na stronie kumpla - Twój problem musi być w innym miejscu, albo nadal nie możemy się dokładnie zrozumieć


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
Tomplus
post
Post #14





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


ja nie mam pojęcia, ja to rozwiązać.

do tej pory modyfikowowałem tylko pliki w /controller/ /views/ oraz config.php oraz dzięki tobie routing.php

z wyjątkiem configu podałem wszystkie kody na tej stronie.


--------------------------------------------
W user_guide wyczytałem cos w stylu tego:

plik controllers/test.php
  1. <?php
  2. class Test extends Controller
  3. {
  4. function index($show="start")
  5.  {
  6. echo 'show: '.$show;
  7.  }
  8.  
  9. }
  10. ?>


plik routing.php
  1. <?php
  2. $route['test/:any'] = 'test/$1';
  3. ?>


Teraz wyniki doswiadczenia:
www.strona.pl/test/ -> show: start
www.strona.pl/test/cos -> show: $1 a według pomocy powinno być show: cos

Więc Routers działa, ale dlaczego nie działają Wyrażenia ?

Ten post edytował Tom+ 23.03.2007, 18:17:25
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #15





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


":any" jest wbudowane w CI - żeby działały wyrażenia musisz je poprawnie zapisać, czyli w Twoim przypadku

$route['test/([a-z0-9]+)']="test/$1";

używając $route['test/:any']='test/$1'; tak naprawdę używasz samego 'test/', bo pod $1 nic nie masz - jak widzisz route w CI działa jak najbardziej poprawnie smile.gif


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
Go to the top of the page
+Quote Post
Tomplus
post
Post #16





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


tak, dziękuje za pomoc.

Jednak musiałem jeszcze coś sam wymyślić.

Bo to że zadziało to jedno, a to żeby działo tak jak trzeba to drugie.

Defacto musiałem usunąć wpis w $route['default_controller'] i dopiero zadziało wszytsko tak jak ja oczekiwałem na samym początku tego wątku.


Jeszcze raz dziękuje.
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 Aktualny czas: 21.08.2025 - 06:02