2015-05-30 27 views
5

Nie otrzymałem zawieszenia funkcji extract() i przesyłania zmiennych. Mam metodę w kontroler użytkownika, gdzie niektóre zmienne są zdefiniowane i wysyłane w tablicy do funkcji widoku w kontrolerze nadrzędnej, gdzie tablica jest wyodrębniona. Wtedy widok jest wymagany. Ale zmienne okazują się niezdefiniowane. Zawartość tablicy można wydrukować.

Oto kontroler użytkownika z uproszczoną funkcją profilu:

class User extends Controller{ 

    public function profile(){ 

     $profiledetails = $this->profiledetails();   
     $profilestatus = $this->profileStatus();    

     $this->view('profile', [$profiledetails, $profilestatus]); 
}}  

Zmienne są przesyłane do nadrzędnej funkcji widoku w kontrolerze:

class Controller { 
    public function view($view, $variables =[]){      

    extract($variables); 

    require_once './app/views/' . $view . '.php'; 
}} 

I w widoku „profile.php ", wyświetlany jest niezdefiniowany błąd zmienny. Myślałem, że funkcja "extract()" sprawi, że $ profileedetails i $ profilestatus będą dostępne jako zmienne w widoku. Co robię źle? Być może używam niewłaściwego typu tablicy lub powinienem używać "zmiennych variabe" lub czegoś .. (w takim razie jak?).

+2

'extract' chce tablicę asocjacyjną. –

+0

To, według dokumentów: http://php.net/manual/en/function.extract.php –

Odpowiedz

7

extract współpracuje z tablicą asocjacyjną .

$this->view('profile', 
     [ 
     'profiledetails' => $profiledetails, 
     'profilestatus' => $profilestatus 
     ]); 
+0

* Myślę, że * Myślisz lub wiesz o tym? – Rizier123

+2

Mam na myśli, jestem pewien. Pozwól mi to edytować. –

+1

Bardzo niesamowite. Dzięki! – Galivan