Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Undefined Index a isset zwraca true...
Matiash
post
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 7.04.2007

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


Witam,

Otóż PHP powiadamia mnie w bardzo dziwnej sytuacji, a mianowicie odbieram sobie zmienną w widoku poprzez
  1. $view['url']
. Gdy robię na zmiennej
  1. isset($view['url'])
to zwraca mi true. Natomiast gdy poniżej w tym samym widoku odnoszę się do zmiennej, to wyskakuje mi taka notyfikacja:
  1. Undefined index: url w linijce 29 w pliku: /opt/lampp/htdocs/moj framework - php/view/main.php

Ponadto nawet po takim warningu, zmienna posiada prawidłową, rzeczywistą wartość;

W razie czego napiszę jak zmienne są z kontrolera do widoku przekazywane. Proszę o jakiekolwiek sugestie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Matiash
post
Post #2





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 7.04.2007

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


Nie chodzi o to, że boję się pokazać ale sporo tego jest. Zatem do dzieła:



indexController
  1. class indexController extends BaseController {
  2. public function index() {
  3. $url = $this->registry->settings->getSettings('mainurl');
  4. $this->registry->view->url = $url; //$this->registry->view jest obiektem klasy View
  5. //wywolanie widoku
  6. $this->registry->view->show('main', array('top', 'middle', 'footer'));
  7.  
  8. }
  9. }


View
  1. class View {
  2. private $_registry;
  3. private $_vars = array();
  4. private $_path;
  5.  
  6. public function __construct($registry) {
  7. $this->_registry = $registry;
  8. }
  9.  
  10. public function __set($index, $value) {
  11. $this->_vars[$index] = $value;
  12. }
  13.  
  14. //pokazuje okreslony widok
  15. public function show($view, $view_modules = array()) {
  16. // Ładowanie zmiennych do widoku
  17. if (!class_exists($view)) {
  18. //TODO obsluzyc jesli brak widoku
  19. throw new Exception ('Nie można wczytać widoku: '. $view);
  20. }
  21.  
  22. foreach ($view_modules as $value) {
  23. if (!is_callable("{$view}::{$value}")) {
  24. //TODO obsluzyc niepoprawny modul widoku
  25. throw new Exception('Nie można wczytać modułu wiodku: '.$value.' w widoku: '.$view);
  26. } else {
  27. call_user_func("{$view}::{$value}", $this->_vars);
  28. }
  29. }
  30. }
  31.  
  32.  
  33. }


Widok main:

  1. class main {
  2. private function __construct() {
  3.  
  4. }
  5.  
  6. public static function top($view) {
  7. if (isset($view['url']) && !is_null($view['url'])) {
  8. echo $view['url']; //pokazuje prawidlowy url
  9. } else {
  10. echo "test";
  11. }
  12. //echo var_dump($view);
  13. echo '
  14. <!DOCTYPE html>
  15. <html lang="en">
  16. <head>
  17. <meta charset="utf-8" />
  18. <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
  19. Remove this if you use the .htaccess -->
  20. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  21. <title>new_file</title>
  22. <meta name="description" content="" />
  23. <meta name="author" content="Maciek" />
  24. <meta name="viewport" content="width=device-width; initial-scale=1.0" />
  25. <!-- Replace favicon.ico & apple-touch-icon.png in the root of your domain and delete these references -->
  26. <link rel="shortcut icon" href="/favicon.ico" />
  27. <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
  28. <link rel="stylesheet" type="text/css" href="'.$view['url'].'/css/style.css" /> <!--zwraca, że jest undefined index-->
  29. </head>
  30. <body>
  31. top<hr><br /><br/>
  32. ';
  33. }
  34.  
  35. public static function middle($view) {
  36. echo '
  37. <a href="'.$view['url'].'/register">Zarejestruj się</a>';
  38. }
  39.  
  40. public static function footer($view) {
  41. echo '
  42. <br /><br /><hr>footer
  43. </body>
  44. </html>
  45. ';
  46. }
  47. }


Co ciekawe tylko, w metodzie "top", zwraca ten błąd.

Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 12:20