Avatar billede Jakie Juniormester
30. december 2012 - 18:49 Der er 6 kommentarer og
1 løsning

echo string variabel udenfor function?

Hej Eksperter

Jeg henter en function igennem en givet url auth ved at følgende eksekveres:

class Users extends Controller {

    function __construct() {
        parent::__construct();   
    }

  function auth()
    {
        $this->model->auth();
        $this->view->render('users/auth/index'); // henter header.php, index.php og footer.php for den givet url.

    }
}

Hvor Controller er:

<?php

class Controller {

    function __construct() {
        //echo 'Main controller<br />';
        $this->view = new View();
    }
   
    public function loadModel($name, $modelPath = 'models/') {
       
        $path = $modelPath . $name.'_model.php';
       
        if (file_exists($path)) {
            require $modelPath .$name.'_model.php';
           
            $modelName = $name . '_Model';
            $this->model = new $modelName();
        }       
    }

}

I funktionen auth har jeg bl.a. dette:

if(strlen($brugernavn) < 5 || strlen($brugernavn) > 50)
{
    $msg = "Brugernavnet skal være over 5 og under 50 karaktér";
    return;
}

Hvis jeg så vil echo denne $msg variabel udenfor funktionen? Hvordan gør jeg det? Dette skal ske i en seperat index fil, der bliver kaldt igennem førnævnte  $this->view->render('users/auth/index');

På forhånd tak for hjælpen
Avatar billede olebole Juniormester
30. december 2012 - 20:12 #1
<ole>

Det kan du kun, hvis du får auth til at returnere variablen og på den måde får den ud af funktionens scope

/mvh
</bole>
Avatar billede arne_v Ekspert
30. december 2012 - 21:51 #2
Det er ret almindeligt i MVC web frameworks (ikke-PHP) at controllere altid sender en collection/array af fejlmeddelser til view og at view saa viser dem alle.
Avatar billede Jakie Juniormester
01. januar 2013 - 19:04 #3
Ole: Problemet er, når jeg prøver få auth variablen ud af funktionen, så får jeg fejl.

Fatal error: Call to a member function auth() on a non-object in

Arne: Jeg havde tænkt mig at gøre følgende:


  $errors = array();

if(strlen($brugernavn) < 5 || strlen($brugernavn) > 50)
{
    $errors[] = "Brugernavnet skal være over 5 og under 50 karaktér";
    return;
}

if(count($errors) > 0){
            foreach($errors AS $error){
               
            }
else {
opret bruger
}

Men er der en bedre måde?
Avatar billede arne_v Ekspert
01. januar 2013 - 23:39 #4
Hvad vil du lave i controller og hvad vil du lave i view?
Avatar billede Jakie Juniormester
02. januar 2013 - 14:24 #5
Altså i min Users extends Controller vil jeg gerne eksekvere min auth function igennem url'en auth. Denne function auth gennemgår indput fra en form, hvor man kan oprette sig som bruger. 

I min viewer, vil jeg gerne vise de fejl, der er i oprettelsen. Hvis ikke at der er fejl, skal der stå at brugeren er oprettet.
Avatar billede Jakie Juniormester
03. januar 2013 - 19:35 #6
Så fik jeg løst det..

Tak for jeres svar :)
Avatar billede Jakie Juniormester
07. januar 2013 - 18:10 #7
lukker og slukker, da ingen har skrevet..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester