Jeg har her på det sidste læst lidt om codeigniter, men jeg syntes at jeg mangler at vide noget om hvordan man sådan skal gøre hvis man vil lave en rigtig side, med at loade views i views men alligevel ha en controller til at lave noget til den.
håber der er nogen der kender til det og vil tilkendegive sig :D
Inden der er nogen grund til at tilkendegive sig, så ville det være meget nærliggende at vide hvad det er der gør at du føler et behov for at bruge et framework som CI (eller et hvilket som helst andet framework, hvis tråden skulle udvikle sig i den retning)?
er ikk helt med ? Det er fordi jeg her for nylig har set CI, og vil gerne lærer det at kende. men jeg har bare et problem som jeg godt vil have andre mening på, da jeg ved der er flere måder at gøre det på. Og jeg godt gad og se hvordan andre folk gør det. Det er fordi jeg har flere forskellige views, som bliver included til 1 fil. Men hvordan får jeg indholdet til at komme til de includes via controllers. f.eks. et login sted, når man er logget ind, så vises informationer om dig, og hvis du ikke er , vises der en form. Dettte skal der jo en controller på helst, men det skal der jo også på selve indholdet .
Kunne være rart at se hvordan andre folk har lavet deres sider, da det ville være lettere at se hvordan og hvorledes nogen af tingene skal gøres irl, istedet på tutorials.
Nåeh, kom da helt fra det her igen... Altså, det er jo desværre sådan at vi ikke alle kan blive lige enige om hvilken kodestil der er den rigtige; på den anden side giver det jo naturligvis plads til forbedringer - men altså, min holdning er at dynamikken skal tilføjes til dit view. Om du så vil autoloade et plugin, en model eller en helper, bestemmer du jo selv, men det er lidt nemmere at rådgive dig ud fra den user management løsning du har valgt at bruge?
ja.. Men jeg ved slet ikke hvad jeg skal vælge. Syntes lidt jeg mangler at se et eksempel i action, altså se et fuldt eksempel hvordan en har sat siden op inkluderet sine ting osv. Fordi det jeg jo gerne vil er at gøre det mest dynamisk som muligt, og ikke sådan at jeg skal til at lave hver side for sig selv, men kun det der skifter på hver side. Men det skal jo stadig ikke være noget problen at min login box får data fra en controller. Nok det jeg skal have en åbenbaring om er at hvor jeg får data fra flere end 1 controller, ned i mine views. Håber du kan følge mig :D
Igen, jeg ved ikke hvilken løsning du har valgt, men hvis vi nu forestillede os at du bare anvender CI's eget Session Library, så ville jeg vælge at autoloade det.
Så ville jeg supplere med min egen Model (til at administrere mine brugerkonti).
Så forestil dig at du har en login controller som kontrollerer brugernavn og kodeord med din model og hvis du så er logget ind, redirecter du til brugerens personlige side, og ellers viser du et view (bad_login) som fortæller at de ikke kunne logge ind:
<?php
class Login extends Controller { public function index() { $this->load->model("users"); $this->load->helper("url");
... <!-- Menu, header alt det der.... --> <?php if( $this->load->session->userdata("userId") ): ?> her viser du informationerne fra din brugers data <?php else: ?> her kan du vise din loginform, hvis brugeren ikke er logget ind <?php endif; ?> ... <!-- resten af dit view -->
Det var et simpelt forslag der giver dynamik i dit view, sammen med lidt brug af autoload...
Jeg ved ikke hvad du mener med 'header view' og 'footer view' eller 'main' siden? Nu skal du jo passe på du ikke gør det mere kompliceret end det i virkeligheden er... Idéen med CI var jo at gøre det nemt for dig...
Ja det ved jeg godt.. Og har en fornemmelse på at det er det jeg gør.
Altså, har jo mit design der, hvor der er en header footer bottom, og dem har jeg delt op i views. og så loadet dem alle i en view der hedder site.php.
Så har jeg en controller der hedder site. Som så sender til site.php(view). hvor efter data kommer i mid, for at få det indhold man nu vil have. MEN. Jeg vil jo også godt ha' noget data fa login controlleren, men den skal jo kaldes via site controlleren, og så videre til left(view)
Jeg kan ikke følge dig, for problematikken giver ikke så meget mening. Du kan ikke (som udgangspunkt) få data fra to forskellige controllere - og det er bestemt heller ikke meningen med controllere - det er derfor jeg anbefaler dig at anvende Session Library'et til bibeholde data som du gerne vil anvende i dine views.
mhh. Når. Jeg ved ikke hvad jeg skal gøre så ! ARG! Fordi i mit hoved tænker jeg at jeg skal have en controller til hver ting, men det lyder ikke rigtig til at være sagen, Men hvis jeg nu vil have mine personlige data i den box i left(view) og jeg stadig skal have det samme indhold på siden, som da jeg loggede ind. sådan at jeg ikke bliver smidt væk fra siden bare fordi jeg logger ind.
Nej, min controller styrer ikke indholdet. Det gør mit view. Mine controllere behandler eventuelle data og viser det mit view.
Men for at få dit eksempel til at virke (simpelt), ville jeg lave en model der kunne hente de seneste fem artikler. Autoloade den model og anvende den i mit view, uden at involvere mine controllere i det overhovedet.
Altså, hvis du ikke har en generel forståelse for hvad MVC modellen er og hvordan den fungerer, får du det aldrig til at virke. Så er det bedre hvis du ligger CI på hylden og laver noget selv. Du er allerede i gang med at forvirre dig selv og overkomplicere problemet.
Dit problem er sandsynligvis at du forsøger at gabe over for mange problemstillinger ad gangen, hvilket gør at du gerne vil løse dem alle ad en gang. Det er umuligt; løs et problem ad gangen, refaktorer din kode og løs det næste.
Det var også ment som en læringsfase af det. Og MVC.. Det er ikke fordi det er noget jeg skal have lavet nu, men syntes bare CI vikede meget spændende.
Der er ingen tvivl om at at bruge CI kan tilbyde dig, som udvikler, nogle fordele i forbindelse med udvikling, vedligholdelse og det kan endda være tidsbesparende at anvende (ligesom andre frameworks end lige CI, men koncepterne er stort set de samme).
Der er bestemt ikke noget i vejen for at fortsætte med CI; jeg tror stadig at problemet ligger i at du ikke løser dine problemer i den rigtige rækkefølge, men sammenfatter en masse små til et stort som du gerne vil løse i en bid.
Jeg kan prøve at uddybe det... Dit problem At få en dynamisk boks i dit view, som kan bruges til login, som samtidig kan logge dig ind på den side du er på nu og brugerinfo-kasse.
De problemer jeg ser Der skal være brugerfunktionalitet - løses med en Model Brugerne skal kunne logge ind - løses med et view, som sender sender posts til en login controller Når brugerne har logget, skal jeg gemme oplysninger som kan hentes frem i alle views - løses ved at autoloade session lib og gemme oplysningerne i den når brugeren logger ind Mit view har en kasse, som i stedet for loginboksen, nu skal vise oplysninger om brugeren - løses ved at tilføje dynamik til mit view ud fra mit session lib Brugeren skal helst blive på samme side, som de forsøger at logge ind på - løses ved at sende den nuværende URI med som en POST til min login controller, som jeg så redirecter efter.
Det du skriver giver fuldkommen mening.. Og det rammer faktisk overraskende præcist på hvordan jeg sidder i det :p hvilket egentlig også har fået mig til at se en mulighed for det eller 2 . Men jeg kan stadig ikke helt forstå hvorfor du vil lagere det i sessions, da det er bare er informationer om brugeren,. Eller er det bedre at havde det i session end at det bliver hentet fra databasen ?
Hvis det er din indgangsvinkel, så gør det. Det ville så bare betyde at, hver gang du henter en side, og din brugers oplysninger skal vises i den omtalte boks i dit view, så skal du spørge databasen om det hver gang. Hvis du nu bare gemte de oplysninger, som du gerne vil vise i din boks (lad det være sig brugernavn og muligvis en e-mail adresse), så gem dem, sammen med dit bruger ID i din session. Så slipper du for nogle liniers kode i dit view, samt et unødvendigt kald til din database for hver gang du loader en side.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.